我写了一些代码,应该为我在文件中逐行存储一些字符串数组中的字符串,可悲的是,我必须对数组中的大约200k字符串执行此操作,这使我永远... / p>
foreach (var file in fileArray) {
// Console.WriteLine(file);
string sub = file.Substring(49,file.Length - 49);
using (StreamWriter sw = File.AppendText(folder + ".tfcs"))
{
sw.WriteLine(sub);
}
indexfiles++;
Console.Clear();
Console.WriteLine("Scanning Folder:");
Console.WriteLine(folder);
Console.WriteLine("Filesfound:" + fileArray.Length);
Console.WriteLine("Fileswritten to Database:" + indexfiles);
}
}
有什么办法可以改善这个状况?
P.S。我已经获得了已写入文件的字符串数量的进度...
答案 0 :(得分:20)
您要在每次循环迭代中打开和关闭文件。这几乎可以肯定是问题,或者至少是问题的一部分。
相反,将其打开一次:
using (var writer = File.AppendText(folder + ".tfcs"))
{
foreach (var file in fileArray)
{
writer.WriteLine(file.Substring(49, file.Length - 49));
indexFiles++;
}
}
Console.Clear();
Console.WriteLine("Scanning Folder:");
Console.WriteLine(folder);
Console.WriteLine("Files found:" + fileArray.Length);
Console.WriteLine("Files written to Database:" + indexFiles);
我也将控制台输出移到了最后-清除控制台并在每次迭代中写入控制台,几乎可以肯定,这也会大大降低速度。如果您需要随时提供的进度报告,我会每100行或类似的内容进行一次。