2016-04-12 8 views
1

Ich habe ein seltsames Problem beim Kopieren von Dateien von einem Ordner auf einen anderen auf dem gleichen Laufwerk. Wenn ich in einen bestimmten Ordner PROBLEM_FOLDER kopiere, dauert das Kopieren sehr lange.Warum ist Kopieren in bestimmten Ordner viel langsamer?

Wenn ich in einen anderen Ordner kopieren, den ich als Test OK_FOLDER erstellt habe, ist das Kopieren sehr schnell.

Zuerst bemerkte ich das Problem, nachdem ich versehentlich mein C-Laufwerk vollständig gefüllt hatte und eine große Anzahl von Dateien aus PROBLEM_FOLDER entfernen musste.

Was könnte das Problem hier sein?

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

Ich weiß nicht, wie NTFS (die Sie wahrscheinlich haben) funktioniert, aber ich denke, es hat das gleiche Problem wie FAT mit Ordner voller Dateien arbeiten. Je mehr Dateien im Ordner sind, desto langsamer wird es. [Dies] (http://serverfault.com/q/98235) beweist es. – Sinatr

+0

Versuchen Sie, Ihre Registrierung mit CCleaner zu löschen – Glubus

+0

Haben Sie mehr Dateien in 'Problem_Folder'? Wenn dies der Fall ist, wird dieser Code 'File.Exists (targetPath)' langsamer sein. Haben Sie in einem der Ordner Indizierung? – christiandev

Antwort

1

Möglicherweise haben Sie Systemdateien in diesem Ordner versteckt. Ändern Sie Ihre Ansichtseinstellungen, um ausgeblendete und deaktivierte Systemdateien anzuzeigen. In den alten Tagen war C# notorisch langsam iterierende Ordner und Sie müssen eine bestimmte Art und Weise tun, um mit großen Ordnern zu arbeiten. Das war vor Jahren, also weiß ich nicht, ob das immer noch so ist.

Verwandte Themen