【发布时间】:2017-11-29 09:43:28
【问题描述】:
我正在尝试使用文件中的一些数据初始化List<string>。该文件是一个由回车分隔的单词列表,所以目前,我正在做
var wordList = new List<string>(textFromFile.Split( new[] {"\r\n", "\r", "\n"}, StringSplitOptions.None ) )
但是对于我正在处理的文本文件的大小(其中一个文件中有 172,888 行!),这非常慢。有一个更好的方法吗?文本文件不必按照当前的方式进行格式化,如果有更好的数据存储方法,我可以解析它并以不同的格式写出来。在 C++ 中,我会考虑二进制数据和 memcopy,但我认为 C# 中没有类似的解决方案?
如果相关,代码位于 Unity 应用程序中,因此仅限于 Mono 版本的早期 .NET 功能
【问题讨论】:
-
好吧,你没有展示你是如何阅读文件的。您的代码仅拆分了整个字符串,没有提及您如何获得该字符串。
-
您可能想使用
File.ReadAllLines方法,因为它完全符合您的要求 -
一件事 - 如果您可以控制文件的写入方式,为什么不直接使用
\n分隔符进行标准化,那么您只需拆分一个字符? -
有多慢?文件有多大?你需要它有多慢(并且尽可能快不是一个有效的答案)?
-
请注意,如果你真的不需要它是
List(即 - 不需要在那里添加\删除项目) - 然后只需执行ReadAllLines并使用该数组,因为从数组构造列表会复制所有的东西,这是不必要的。