7

我有一个方法,它接受一个字符串参数,它是一个文本文件的文件路径。我希望能够传入我作为资源嵌入到程序集中的文本文件。

有没有办法获得对嵌入文本文件的字符串引用,以便它可以用作打开 StreamReader 的文件路径?

谢谢。

4

3 回答 3

8

您可以使用Assembly.GetManifestResourceStream(resource_name_of_the_file)访问文件的流,将其写入 TEMP 目录并使用此路径。

例如,如果您的项目中有一个位于“ Resources\Files\File.txt ”路径下的文件,并且项目的程序集默认命名空间是“ RootNamespace ”,则您可以从该程序集的代码中访问该文件的流

Assembly.GetExecutingAssembly().GetManifestResourceStream("RootNamespace.Resources.Files.File.txt")
于 2012-08-09T22:32:24.513 回答
6

有没有办法获得对嵌入文本文件的字符串引用,以便它可以用作打开 StreamReader 的文件路径?

不,嵌入资源不是单独的文件,而是嵌入到可执行文件中。但是,您可以使用StreamReader.

var name = "...";
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(name)) 
  using (var streamReader = new StreamReader(stream)) {
    // Read the embedded file ...
  }
于 2012-08-09T22:32:02.503 回答
0

适用于我的用例的一种方法来自以下答案: https ://stackoverflow.com/a/34664553/11860907

对于二进制文件:File.WriteAllBytes(outputpath, Properties.Resources.file);

对于文本文件:File.WriteAllText(outputpath, Properties.Resources.file);

当我的程序第一次打开时,我只是为我需要的每个嵌入式资源文件运行了这行代码,并将资源文件放在我可以作为字符串路径引用的某个地方。

于 2021-09-03T19:15:01.573 回答