这是场景:
我有一个包含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);
}
}
Run Code Online (Sandbox Code Playgroud)
减速是它一次写出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));
}
}
Run Code Online (Sandbox Code Playgroud)
我需要知道的第一件事是减速在哪里?Directory.GetFiles()执行需要89分钟,还是延迟调用FileInfo file_info = new FileInfo(file);?
如果延迟来自后者,您可以通过从路径获取文件名而不是创建FileInfo实例来获取文件名来加快速度.
System.IO.Path.GetFileName(file);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3181 次 |
| 最近记录: |