【问题标题】:Open Resource File with FileStream fails [closed]使用 FileStream 打开资源文件失败 [关闭]
【发布时间】:2015-01-05 23:21:37
【问题描述】:

我想用 FileStream 类打开一个资源文件。这是一个文本文件,我想逐行阅读。

FileStream fs = new FileStream(Properties.Resources.Testing, FileMode.Open, FileAccess.Read);

调用的异常是System.ArgumentException,它说有一个无效字符。

我希望任何人都可以帮助我解决这个问题,或者如果有更好的方法也可以,但我需要 .exe 中的文件,所以它需要是一个资源..

【问题讨论】:

  • 价值是什么意思?它是一个 txt 文件,我已通过 Visual Studio 中的资源添加它。
  • 您是否尝试过编写一些简单的代码来打开文本文件并读取内容..?也许显示更多相关代码会有所帮助
  • 在我可以读取文件之前我需要解决这一行,还是我错了?
  • 一个FileStream用于对文件系统中的文件进行操作。嵌入式资源不是文件系统的一部分。

标签: c# filestream resource-file


【解决方案1】:

当您将文本文件添加为资源时,它将嵌入为字符串。因此,您的 FileStream 构造函数调用将假定您正在尝试在磁盘上打开一个名称与文本文件内容相同的文件。当然结局很糟糕。

如果你真的想要一个流,这不是很清楚,字符串往往是好的,你可以考虑使用 String.Split() 方法将它分成几行。或者,也许您喜欢 StringReader 类,因此您可以使用 ReadLine():

    using (var rdr = new StringReader(Properties.Resources.Testing)) {
        string line;
        while ((line = rdr.ReadLine()) != null) {
            // Do something with line
            //...
        }
    }

【讨论】:

  • 如果它对你有帮助,在文本文件中是字节,我希望它们在一个从上到下开始的 byte[] 中。通过您的回答,为什么调试显示“文件”中有 /r/n 对我来说很有意义。所以我会看看是否有“StringReader”或合适的运算符:)
  • 嗯,不,这没有帮助。文本文件包含字符。
  • 但是我成功了。我可以直接访问该字符串,我不需要任何 Reader 或类似的东西。但实际上我不确定它是一根大弦还是许多小砖
  • C# 字符串中的@Criska 是字符串。如果您读取资源并获取字符串,那么您应该拥有整个字符串。您可以根据需要对其进行解析。
  • Console.WriteLine(line + "-");有了这条线,我的输出看起来像 11 - 34 - 55 - 等等,在我看来,如果这是一个完整的字符串,这不会发生。我认为@HansPassant 解决了它,其他答案也很棒!谢谢
猜你喜欢
  • 1970-01-01
  • 2020-08-29
  • 1970-01-01
  • 1970-01-01
  • 2012-07-17
  • 1970-01-01
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多