【发布时间】:2009-12-21 16:45:40
【问题描述】:
这是场景:
我有一个包含 2+ 百万个文件的目录。我下面的代码在大约 90 分钟内写出所有文件。有没有人有办法加快速度或使这段代码更有效?我也想只写出列表中的文件名。
string lines = (listBox1.Items.ToString());
string sourcefolder1 = textBox1.Text;
string destinationfolder = (@"C:\anfiles");
using (StreamWriter output = new StreamWriter(destinationfolder + "\\" + "MasterANN.txt"))
{
string[] files = Directory.GetFiles(textBox1.Text, "*.txt");
foreach (string file in files)
{
FileInfo file_info = new FileInfo(file);
output.WriteLine(file_info.Name);
}
}
速度慢的是它一次写出 1 行。
大约需要 13-15 分钟才能得到它需要写出的所有文件。
接下来的 75 分钟正在创建文件。
【问题讨论】:
-
它与您的问题无关,但不要这样做:destinationfolder + "\\" + "MasterANN.txt 改为使用 Path.Combine(destinationFolder, "MasterANN.txt")
-
如果使用 dir 从命令行执行此操作会更快吗?例如,“dir /b *.txt > c:\anfiles\MasterANN.txt”。如果是这样,您可以使用 dir(使用 Process 类)。