0

我习惯了 .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 时它会重新出现。

4

4 回答 4

6

好吧,您可以File.ReadAllLines改用-它将整个文件读入 astring[]而不是逐行读取,但是由于ToArray调用,无论如何您都将整个文件读入内存,因此它的效率比 with 低一点File.ReadLines

于 2013-10-30T15:25:11.920 回答
4

ReadLines是.Net 4+。您应该可以ReadAllLines改用。

MSDN 文档

ReadLines 和 ReadAllLines 方法的区别如下: 使用 ReadLines 时,可以在返回整个集合之前开始枚举字符串集合;使用 ReadAllLines 时,必须等待返回整个字符串数组才能访问该数组。因此,当您处理非常大的文件时,ReadLines 会更有效率。

于 2013-10-30T15:25:49.667 回答
3

这应该有效:

var Data = File.ReadAllLines(FilePath).Select(line => line.Split('\t')).ToArray();

ReadAllLines在 .NET Framework 3.5 中可用。ReadLines懒惰地读取文件的行,并且仅从 .NET Framework 4.0 开始可用,但是由于无论如何您都将整个内容转换为数组,ReadAllLines因此应该适合您的需要。

于 2013-10-30T15:25:28.927 回答
2

ReadLinesIEnumerable<string>已在 .NET 4 中添加。由于无论如何您都在使用整体,ReadAllLines因此可以改为使用。

var Data = File.ReadAllLines(FilePath).Select(line => line.Split('\t')).ToArray();
于 2013-10-30T15:28:01.593 回答