我对File.ReadLines()和File.ReadAllLines()有疑问,.what是它们之间的区别。我有一个文本文件,其中包含按行排列的数据。File.ReadAllLines()返回数组,使用File.ReadLines().ToArray();,我也可以得到相同的result.So吗?这些方法有什么性能差异吗?
string[] lines = File.ReadLines("C:\\mytxt.txt").ToArray();或
string[] lines = File.ReadAllLines("C:\\mytxt.txt");发布于 2014-02-23 23:13:05
这些方法有没有性能上的差异?
是的,是有区别的
File.ReadAllLines()方法一次读取整个文件并返回string[]数组,因此在处理大文件时需要时间,因此不建议这样做,因为用户必须等到返回整个数组。
File.ReadLines()返回一个IEnumerable<string>,并且它不会一次性读取整个文件,因此在处理大文件时,它确实是一个更好的选择。
来自MSDN:
ReadLines和ReadAllLines方法的不同之处如下:
使用ReadLines时,可以在返回整个集合之前开始枚举字符串集合;使用ReadAllLines时,必须等到返回整个字符串数组后才能访问该数组。因此,当您处理非常大的文件时,ReadLines可能会更高效。
示例1:File.ReadAllLines()
string[] lines = File.ReadAllLines("C:\\mytxt.txt");示例2:File.ReadLines()
foreach (var line in File.ReadLines("C:\\mytxt.txt"))
{
//Do something
}发布于 2014-02-23 23:06:02
File.ReadLines方法返回IEnumerable<string>。但是File.ReadAllLines返回string[]如果你读取一个大文件,你最好使用File.ReadLines方法。因为它从文件中逐行读取,而不是将所有文件读取到string[]中,这会占用大量内存。MSDN
发布于 2014-02-23 23:08:09
ReadAllLines
打开一个文本文件,读取该文件的所有行,然后关闭该文件。
如果你有小文件或者必须一次处理整个文件,那么使用它,因为它完全读取文件,这意味着整个文件在你的内存中,在大文件的情况下,它可能会降低性能。
ReadLines
使用File.ReadLines方法,可以在返回整个集合之前开始枚举字符串集合。
如果您需要分块处理文件(而不是一次处理整个文件),那么它很有用。
MSDN中声明的备注
ReadLines和ReadAllLines方法的不同之处如下:
使用ReadLines时,可以在返回整个集合之前开始枚举字符串集合;使用ReadAllLines时,必须等到返回整个字符串数组后才能访问该数组。因此,当您处理非常大的文件时,ReadLines可能会更高效。
Here is more details and comparison demo available
https://stackoverflow.com/questions/21969851
复制相似问题