根据微软对ReadLines
andReadAllLines
方法的解释,当你使用 时ReadLines
,你可以在返回整个集合之前开始枚举字符串集合。使用 时ReadAllLines
,必须等待返回整个字符串数组才能访问该数组。因此,当您处理非常大的文件时,ReadLines
效率会更高。
当他们说:
1 - “当你使用ReadLines时,你可以在返回整个集合之前开始枚举字符串的集合。 ” 如果写了下面这行代码,那么是不是意味着ReadLines
方法执行结束了,整个集合是返回并存储在变量文件数据中?
IEnumerable<String> filedata = File.ReadLines(fileWithPath)
2-“使用时ReadAllLines
,必须等待返回整个字符串数组才能访问数组”。这是否意味着,在下面的代码片段中,如果读取了一个大文件,那么如果在读取文件后立即使用数组变量 hugeFileData 将不会包含所有数据?
string[] hugeFileData = File.ReadAllLines(path)
string i = hugeFileData[hugeFileData.length-1];
3 - “当您处理非常大的文件时,ReadLines 可以更高效”。如果是这样,下面的代码在读取大文件时是否有效?我相信下面的代码的第 2 行和第 3 行会读取文件两次,如果我错了,请纠正我。
string fileWithPath = "some large sized file path";
string lastLine = File.ReadLines(fileWithPath).Last();
int totalLines = File.ReadLines(fileWithPath).Count();
在上面的代码片段中两次在同一个文件上调用 ReadLines 的原因是,当我尝试下面的代码时,TextReader
在下面的代码片段的第 3 行出现异常“无法从已关闭的文件中读取”。
IEnumerable<String> filedata = File.ReadLines(fileWithPath);
string lastLine = filedata.Last();
int totalLines = filedata.Count();