场景如下:
我有一个包含 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 分钟是创建文件。
最佳答案
如果您不为每个文件创建一个 FileInfo 实例,而是使用 Path.GetFileName,这可能会有所帮助:
string lines = (listBox1.Items.ToString());
string sourcefolder1 = textBox1.Text;
string destinationfolder = (@"C:\anfiles");
using (StreamWriter output = new StreamWriter(Path.Combine(destinationfolder, "MasterANN.txt"))
{
string[] files = Directory.GetFiles(textBox1.Text, "*.txt");
foreach (string file in files)
{
output.WriteLine(Path.GetFileName(file));
}
}
关于C# Directory 列出海量目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1941223/