2012-09-08 147 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