2016-04-12 31 views
1

我有一个奇怪的问题,从一个文件夹复制到另一个文件夹在同一个驱动器上。为什么复制到特定文件夹慢得多?

如果我复制到特定文件夹PROBLEM_FOLDER复制需要很长时间。

如果我复制到我创建的另一个文件夹作为测试OK_FOLDER复制速度非常快。

我第一次注意到这个问题后,我不小心完全填补了我的C驱动器,并不得不从PROBLEM_FOLDER删除大量的文件。

这里有什么问题?

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Diagnostics; 

namespace TestCopy 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 

      MoveFiles(@"C:\HOTDATA\DB\TEST", @"C:\PROBLEM_FOLDER\DB"); 
      //MoveFiles(@"C:\HOTDATA\DB\TEST", @"C:\OK_FOLDER\DB"); 
     } 

     public void MoveFiles(string sourceDir, string targetDir) 
     { 
      foreach(var file in Directory.GetFiles(sourceDir,"nEq*-1m*")) 
      { 

       string FileName = Path.GetFileName(file); 

       var targetPath = Path.Combine(targetDir, FileName); 
       if (File.Exists(targetPath)) 
       { 
        //File.Delete(targetPath); 
       } 
       else 
       { 
        File.Move(file, targetPath); 
       } 
      } 
     } 

    } 
} 
+0

我不知道如何NTFS(你更可能有)的作品,但我想它与FAT相同的问题处理文件夹的文件夹。文件夹中的文件越多=它变得越慢。 [This](http://serverfault.com/q/98235)证明了这一点。 – Sinatr

+0

尝试使用CCleaner清理您的注册表 – Glubus

+0

在'Problem_Folder'中是否有更多文件?如果是这样,这个代码'File.Exists(targetPath)'将会变慢。你有索引任何文件夹? – christiandev

回答

1

您可能在该文件夹中隐藏了系统文件。更改您的视图设置以显示隐藏并取消隐藏受保护的系统文件。在过去,c#在迭代文件夹方面出了名慢,你必须以某种方式来处理大文件夹。虽然这是几年前,所以我不知道它是否仍然如此。

相关问题