【问题标题】:Read txt files from build without writing them从构建中读取 txt 文件而不写入它们
【发布时间】:2014-08-04 20:07:59
【问题描述】:

我想制作一个控制台应用程序,用于测试要包含在应用程序中的 .txt 文件。但是, File.ReadAllLines(string) 似乎只有 string-filepath 构造函数,而不是获取文件本身的构造函数,可以通过 mytextfile = myProject.Properties.Resources.mytextfile.txt;

所以我是否必须在某个地方从构建中写入文件,对其调用反射以找出其完整路径,然后才能使用 ReadAllLines() 将其转换为字符串数组?没有更简单的方法吗?

【问题讨论】:

  • 如果您将文件作为嵌入式资源,则不需要从磁盘读取的ReadAllLines(string)。我不确定这个问题是关于什么或如何涉及写作。但我怀疑真正的问题是:“如何将所有嵌入的文本文件行作为字符串数组读取?”
  • 如果我想让用户在构建中的文件或他自己选择的文件上调用测试方法怎么办?从构建中读取它的 ReadAllLines(string) 的替代方法是什么?
  • 然后使用不同的代码以不同的方式访问资源。代码可以围绕 Stream 统一 - 一旦打开,就可以以相同的方式读取它。那么这只是“逐行读取文本流”或“将文本流读入字符串数组”的问题,流是来自磁盘还是嵌入式资源都没有关系。

标签: c# visual-studio build io text-files


【解决方案1】:

您可以像这样以流的形式打开嵌入的资源:

Assembly assembly = Assembly.GetExecutingAssembly();
var stream = assembly.GetManifestResourceStream("Namespace.mytextfile.txt");

然后像这样从流中获取文本:

var reader = new StreamReader(stream);
var text = reader.ReadToEnd();

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-26
  • 2021-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多