首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从资源中读取文件

从资源中读取文件
EN

Stack Overflow用户
提问于 2016-03-03 18:27:07
回答 2查看 25.4K关注 0票数 4

我已经将sample.txt(它只包含一行"aaaa“)文件嵌入到项目的资源中,就像在这个answer中一样。当我像这样读它的时候:

代码语言:javascript
运行
复制
string s = File.ReadAllText(global::ConsoleApplication.Properties.Resources.sample);

我得到了System.IO.FileNotFoundException的例外。附加信息:找不到文件'd:\Work\Projects\MyTests\ConsoleApplication\ConsoleApplication\bin\Debug\aaaa'.

所以看起来,它试图从我的资源文件中获取文件名,而不是读取这个文件。为什么会发生这种情况?我如何让它读到sample.txt

尝试@Ryios的解决方案并获得参数空异常

代码语言:javascript
运行
复制
  using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("ConsoleApplication.Resources.sample.txt"))
        {
            TextReader tr = new StreamReader(stream);
            string fileContents = tr.ReadToEnd();
        }

该文件位于d:\Work\Projects\MyTests\ConsoleApplication\ConsoleApplication\Resources\sample.txt

附注:解决了。我必须在sample.txt属性中设置Build embed资源

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-03 18:45:04

您不能使用File.ReadAllText读取资源文件。

相反,您需要使用Assembly.GetManifestResourceStream打开资源流。

您也不把路径传递给它,而是将它传递给名称空间。该文件的命名空间将是Assemblies默认名称空间+文件所在项目中的文件夹继承+文件名。

想象一下这个结构

  • 项目(xyz.project)
    • Folder1

      • Folder2

        • SomeFile.Txt

因此,该文件的命名空间为:

xyz.project.Folder1.Folder2.SomeFile.Txt

然后你就会读成这样

代码语言:javascript
运行
复制
        using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("xyz.project.Folder1.Folder2.SomeFile.Txt"))
        {
            TextReader tr = new StreamReader(stream);
            string fileContents = tr.ReadToEnd();
        }
票数 11
EN

Stack Overflow用户

发布于 2017-07-02 19:00:43

你好,建议的解决方案不起作用

此返回null

代码语言:javascript
运行
复制
Assembly.GetExecutingAssembly().GetManifestResourceStream("xyz.project.Folder1.Folder2.SomeFile.Txt")

另一种方法是使用来自MemoryStreamRessource Data

代码语言:javascript
运行
复制
  byte[] aa = Properties.Resources.YOURRESSOURCENAME;
  MemoryStream MS =new MemoryStream(aa);
  StreamReader sr = new StreamReader(MS);

不太理想,但有效

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35780084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档