2010-10-20 118 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