C# Directory 列出海量目录

标签 c# file-io

场景如下:

我有一个包含 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/

相关文章:

c# - 使用来自另一个列表的参数对一个列表进行排序,并使用可连接的参数

java - 如何将输入流复制到需要输出流的 Apache TeeOutputStream?

linux - UNIX lseek/读/写行为

c# - 更改 Windows 窗体应用程序中的字体大小

c# - List<string> Debug模式下的声明速度差异

c# - 如何在不使用 EntityFramework 保存到数据库的情况下在 ASP.NET 中跨实体请求保存状态?

c++ - 从文件输出原始字节,第一个字节已损坏

c# - 如何在 Linq FromSQL 查询中使用参数

java - BufferedReader 构造函数期望 FileReader 是什么

java - 为什么在我的 BufferedReader 中使用*更大*的缓冲区时性能会*差*?