2010-10-20 116 views
6

如何打開嵌入資源文件中的文件,如硬盤上的文件(帶有絕對路徑)?.NET:打開文件,嵌入在資源文件中

+0

你打開什麼意思?你的意思是加載二進制內容? – Aliostad 2010-10-20 09:03:29

+0

這有點令人困惑。您是在談論訪問硬盤上的嵌入式資源還是嵌入式資源? – InSane 2010-10-20 09:05:02

回答

11

假設您已將test.xml文件嵌入程序集中。你可以使用GetManifestResourceStream方法來獲取對內容的流指向:

class Program 
{ 
    static void Main() 
    { 
     var assembly = Assembly.GetExecutingAssembly(); 
     using (var stream = assembly.GetManifestResourceStream("ProjectName.test.xml")) 
     using (var reader = new StreamReader(stream)) 
     { 
      Console.WriteLine(reader.ReadToEnd()); 
     } 
    } 
} 

這樣,文件的內容讀入內存中。您也可以將其存儲到硬盤,然後通過絕對路徑訪問,但這可能不是必需的,因爲您已經擁有文件的內容。

+2

您需要在文件名之前包含項目的默認名稱空間,而不是項目名稱。 – Rich 2011-01-04 18:47:22

+0

如果文件不存在作爲嵌入式資源,您的'流'變量將爲空。這將在創建StreamReader時導致異常。 – Kilhoffer 2012-01-30 17:37:46