我已经习惯了.NET 4.0,但遇到了我必须恢复到.NET 3.5的情况。
在我的4.0代码中,我会依赖它来读取我的数据:
var Data = File.ReadLines(FilePath).Select(line => line.Split('\t')).ToArray();
以上内容在3.5中不起作用。有谁知道3.5中的等价物是什么允许我在'FilePath'读取数据并将数据放入数组?
我在3.5中得到的错误是System.IO.File不包含ReadLines的定义。当我将项目属性更改为4.0的目标框架时,不会出现此错误。当我使用目标框架3.5时,它会重新出现。
答案 0 :(得分:6)
那么你可以使用File.ReadAllLines
代替 - 这会将整个文件读成string[]
而不是逐行读取,但是由于{你无论如何都要将整个文件读入内存中{1}}调用,因此效率低于ToArray
。
答案 1 :(得分:4)
ReadLines
是.Net 4+。您应该可以使用ReadAllLines
代替。
ReadLines和ReadAllLines方法的不同之处如下:使用ReadLines时,可以在返回整个集合之前开始枚举字符串集合;当您使用ReadAllLines时,必须等待返回整个字符串数组才能访问该数组。因此,当您使用非常大的文件时,ReadLines可以更有效。
答案 2 :(得分:3)
这应该有效:
var Data = File.ReadAllLines(FilePath).Select(line => line.Split('\t')).ToArray();
.NET Framework 3.5中提供了 ReadAllLines
。 ReadLines
懒惰地读取文件的行,并且仅在.NET Framework 4.0中可用,但由于您要将整个事物转换为数组,ReadAllLines
应该适合您的需要。
答案 3 :(得分:2)
ReadLines
。由于您无论如何都在使用整个IEnumerable<string>
,因此可以使用ReadAllLines
。
var Data = File.ReadAllLines(FilePath).Select(line => line.Split('\t')).ToArray();