1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C# 读取处理超大TXT文本文件

C# 读取处理超大TXT文本文件

时间:2023-03-11 00:13:01

相关推荐

C# 读取处理超大TXT文本文件

现有一个超大TXT文件,内部以\t\n分格,大小3.9G,第一行是列名,现在要将每一行的数据读出来进行处理,如果一次性读进内存肯定是不行的。

目录

读第一行:

读后续行:

遍历方法

使用感受

参考:

读第一行:

string headerLine = File.ReadLines(path).FirstOrDefault(); // Read the first row for headings

读后续行:

_filePath是文件路径

_currentLine是读过的行数

limit指定的是一次读多少行

_encoding指定编码为GBK或UTF-8

static private System.Text.Encoding _encoding = Encoding.GetEncoding("gb2312");//Encoding.UTF8; //Encoding.ASCII;

public static IEnumerable<string> readMultiLines(int limit = 100)

{

try

{

var lines = File.ReadLines(_filePath, _encoding).Skip(_currentLine).Take(limit);

_currentLine += limit;

return lines;

}

catch(Exception ){

return null;

}

}

遍历方法

ReadLines返回的是一个IEnumerable 类型,可以用iter进行遍历。

iter.Current直接获取每一行的字符串,不要使用iter.toString(),会很费时间。

var lines = File.ReadLines(_filePath, _encoding).Skip(_currentLine).Take(bigStep);

var iter = lines.GetEnumerator();

int size = lines.Count<string>();

while (iter.MoveNext())

{

string dataStr = iter.Current;

fun(dataStr);

}

使用感受

每次读500行,在读取前100万行时感觉还非常快,但在后面感觉还是有一点的延时。不过应该满足需求了。

参考:

1./Agenty/FileReader/blob/master/FileReader/Core/Extension.cs

2./callmeback/article/details/8295648

3./questions/21136753/read-a-very-large-file-by-chunks-and-not-line-by-line

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。