2012-09-08 158 views
0

当我点击一个按钮时,你知道如何从Visual Studio中的资源打开文件吗? 谢谢。如何从资源打开文件C#

+2

当你点击在Visual Studio中的按钮?或者当你点击键盘上的按钮?或者当你点击页面上的按钮创建ASP.Net?或WinForm上的按钮? (请注意,有些搜索引擎可以节省您的时间 - “从资源加载C#”并不是罕见的搜索请求。广告:您可以使用http://www.bing.com进行搜索)。 –

+0

改变问题的含义并不是真的可以接受。我已经把它回滚到原来的。请不要再这样做。谢谢。 – Kev

回答

1

这可以当你的文件是本地文件

 string resName = "myfile.txt"; 
     var file = GetResourceStream(resName); 
     string all = ""; 

     using (var reader = new StreamReader(file)) 
     { 
      all = reader.ReadToEnd(); 
     } 

被用在

 static UnmanagedMemoryStream GetResourceStream(string resName) 
    { 
     var assembly = Assembly.GetExecutingAssembly(); 
     var strResources = assembly.GetName().Name + ".g.resources"; 
     var rStream = assembly.GetManifestResourceStream(strResources); 
     var resourceReader = new System.Resources.ResourceReader(rStream); 
     var items = resourceReader.OfType<System.Collections.DictionaryEntry>(); 
     var stream = items.First(x => (x.Key as string) == resName.ToLower()).Value; 
     return (UnmanagedMemoryStream)stream; 
    } 

enter image description here

8

你可以使用GetManifestResourceStream方法:

var currentAssembly = Assembly.GetExecutingAssembly(); 
using (var stream = currentAssembly.GetManifestResourceStream("SomeNs.file.txt")) 
using (var reader = new StreamReader(stream)) 
{ 
    // TODO: read the stream here 
    string contents = reader.ReadToEnd(); 
} 

在这个例子中file.txt被嵌入到当前的组件资源。您将不得不调整您尝试阅读的资源的名称。如果嵌入式资源不是文本文件,请勿使用StreamReader。如果它是一个二进制文件,您将不得不直接读取该流。

+0

+1:这是问题的正确答案。 – quantum