我们可以使用 StreamReader
读取文件或使用 File.ReadAllLines
.
例如,我想将每一行加载到 List
或 string[]
中,以便对每一行进行进一步操作。
string[] lines = File.ReadAllLines(@"C:\\file.txt");
foreach(string line in lines)
{
//DoSomething(line);
}
或
using (StreamReader reader = new StreamReader("file.txt"))
{
string line;
while ((line = reader.ReadLine()) != null)
{
//DoSomething(line); or //save line into List<string>
}
}
//if list is created loop through list here
应用程序遇到不同大小的文本文件。偶尔会从几 KB
增长到 MB
。
我的问题是,哪一种是首选方式,为什么应该首选一种方式?
最佳答案
如果要处理文本文件的每一行而不将整个文件加载到内存中,最好的方法是这样的:
foreach (var line in File.ReadLines("Filename"))
{
// ...process line.
}
这避免了加载整个文件,并使用现有的 .Net 函数来执行此操作。
但是,如果由于某种原因您需要将所有字符串存储在一个数组中,您最好只使用 File.ReadAllLines()
- 但如果您只使用 foreach
访问数组中的数据,然后使用 File.ReadLines()
。
关于c# - File.ReadAllLines 或 Stream Reader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23989677/