我编写了一个程序来清理我几个月来收集的一些财务数据。它总共大约 100GB 并且每天都在增长,每个文件大约 1-2GB。它当前以文本文件格式存储。
下面的代码用于清理数据:
static void Main()
{
string inputString;
string outputString;
// others variable omitted
string[] lineSplit;
foreach (string fullPath in Directory.GetFiles(inputDirectory))
{
using (StreamReader reader = new StreamReader(fullPath)) //read from input file
{
while ((line = reader.ReadLine()) != null)
{
//logic to clean data
...
///////////////////////////////////////////////////////////
using (StreamWriter writer = File.AppendText(outputFile))
{
writer.WriteLine(outputString);
}
}
}
}
}
它非常慢,我估计 100GB 的数据大约需要 3-4 天才能完成。我知道这是关于我的 IO 操作,因为我没有缓冲区等来做。我对 C# 还是比较陌生,我找不到任何相关示例来为 IO 构建适当的缓冲区。我发现的大多数示例都是用于下载的,不适用于阅读文本文件。而且我无法将整个文件加载到内存中进行处理,因为它太大了。我该怎么做?谁能给我一些我可以使用的代码片段?谢谢