【问题标题】:Is there a way to get a string path reference to an embedded resource file?有没有办法获得对嵌入式资源文件的字符串路径引用?
【发布时间】:2012-08-07 05:43:59
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: c# .net


    【解决方案1】:

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

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

    var name = "...";
    using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(name)) 
      using (var streamReader = new StreamReader(stream)) {
        // Read the embedded file ...
      }
    

    【讨论】:

      【解决方案2】:

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

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

      Assembly.GetExecutingAssembly().GetManifestResourceStream("RootNamespace.Resources.Files.File.txt")
      

      【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2012-09-16
        • 1970-01-01
        • 1970-01-01
        • 2019-01-02
        • 2014-04-15
        • 1970-01-01
        • 2013-07-10
        • 1970-01-01
        • 2016-10-04
        相关资源
        最近更新 更多