【问题标题】:Read Lines from textfile in assets to array从资产中的文本文件中读取行到数组
【发布时间】:2015-02-03 23:44:20
【问题描述】:

我正在使用以下代码从 Assets 文件夹中将文本文件读入字符串并将其拆分为数组

string filepath = @"Assets\DATA.csv";
StorageFolder folder =     Windows.ApplicationModel.Package.Current.InstalledLocation;
StorageFile file = await folder.GetFileAsync(filepath); // error here
var Lines = await Windows.Storage.FileIO.ReadTextAsync(file);
string[] lines2 = Lines.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);

这工作正常,但文本文件现在超过 500 行,我收到一个异常,因为它太大而无法放入字符串

有没有一种方法可以一次将文本文件直接读入数组中 每行以换行符结束

我已经搜索过了,似乎有一种使用文件的方法。上课,但我可以让它工作。

【问题讨论】:

  • “我已经搜索过了,似乎有一种方法可以使用 file.class 但我也可以做到这一点” - 告诉我们你尝试了什么
  • 使用 StreamReader 类
  • 我可以做同样的事情从来没有出现过那个错误..还有你怎么会在Environment.NewLine而不是,上分裂你也用过Debugger
  • ako 是对的 - 使用 StreamReader,因为它已经为您抽象了行尾内容(请参阅 chouaib 的答案)。 @MethodMan 在循环 CSV 时,获取所有行然后将行拆分为列是有意义的......除非使用二维数组来存储值

标签: c# arrays file split file.readalllines


【解决方案1】:

【讨论】:

  • 是的。通常,但这似乎是 WinRT。真的需要一个标签,等等。
  • 哦,是的,抱歉,因此是 Windows.ApplicationModel.Package.Current.InstalledLocation。
  • 是的,winRT 试过了,但它说文件在 System.IO 中不存在,您是否缺少参考,但我的 using 声明中有 system.io
【解决方案2】:

你想要Windows.Storage.FileIO.ReadLinesAsync,它返回文件行的列表。

List<string> myLines = ReadLinesAsync(myStorageFile);

【讨论】:

  • 在 List myLines = ReadLinesAsync(file);但表示它在当前上下文中不存在,非常感谢您的帮助
【解决方案3】:

你可以把它读成一个字符串列表,每一行文本都在列表的一个元素中

List<string> myList= new List<string>();
StreamReader sr = new StreamReader(filepath);

while(!sr.EndOfStream)
{
  myList.Add(sr.ReadLine());
}

【讨论】:

  • 试过了,但说找不到列表是否缺少参考,是否需要系统和 IO 以外的其他参考?
  • @MarkBarr, L 关键字中的List 应该是大写的,我编辑了答案,你可以再试一次吗
  • 它仍然有一个错误新的流读取器(文件路径)下划线表示“System.IO.StreamReader.StreamReader(System.IO.Stream)”的最佳重载方法匹配有一些无效参数
  • 我想知道那里发生了什么!但如果你将它用作new streamreader(filepath) 是的,那是错误的语法,它应该是new StreamReader(filepath);ss
猜你喜欢
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
  • 2012-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多