2016-06-17 12 views
2

Ich versuche gerade, ein Programm zu erstellen, das eine Ordnerstruktur in ein Verzeichnis kopieren soll. HierDatei in eine andere Ordnerstruktur kopieren

ein Beispiel:
C:\test1\folder\folder\file.txt sollte bis in C:\test2\folder\folder\file.txt

beende ich eine List<FileSystemInfo für die Quelle-Ordner haben und jetzt brauche ich die Dateien zu kopieren und die Ordner wie im Beispiel erstellen.

Ich möchte dies ohne Pfadname-Strings wegen der Dateiname-Begrenzung von 260 Zeichen tun.

ich diesen Code haben Sie die Dateien mit Pfadnamen zu kopieren:

string destFile = BackupOptions.DestinationFolder + sourceFileInfo.FullName; 
string destParent = Directory.GetParent(destFile).FullName; 
string backupFolder = destParent + @ "\backupFolder"; 
try { 
while (!Directory.Exists(destParent)) { 
    if (!Directory.Exists(destParent)) { 
    Directory.CreateDirectory(destParent); 
    } 
} 
FileAttributes fileAttributes = sourceFileInfo.Attributes; 
if ((fileAttributes & FileAttributes.Directory) == FileAttributes.Directory) { 
    Directory.CreateDirectory(destFile); 
} else { 
    FileInfo file = (FileInfo) sourceFileInfo; 
    file.CopyTo(destFile, true); 
} 
} catch (Exception e) { 
Console.Write(e.Message); 
return false; 
} 

Hat jemand weiß, wie man eine Datei/Verzeichnis kopieren nur mit dem Filesysteminfo-Objekt dieser Datei/Objekt?

Antwort

1

Ich glaube nicht, dass eine der .NET IO-Klassen gerade lange Pfade unterstützt. Kein Weg um das, von dem ich weiß. Im .NET 4.0-Zeitrahmen hat das Team einen öffentlichen Versuch unternommen, das hinzuzufügen, aber es ist nie gelandet.

Verwenden Sie eine Suchmaschine, um eine Bibliothek zu finden, die das hinzufügt. Die Bibliothek verwendet intern PInvoke (was Sie natürlich direkt mit weniger Komfort verwenden könnten). Ich denke AlphaFS ist ein bekannter Name.

Sie können Ihren Code vereinfachen: Directory.CreateDirectory erstellt mehrere Ebenen zur gleichen Zeit und schlägt nicht fehl, wenn das Verzeichnis bereits existiert. Das ist fast immer was du brauchst.

dann mit den String Eltern-Ordnern des Objekts verwenden und das Verzeichnis, in dem Zielordner erstellen

nicht 100% sicher, was Sie meinen, aber es könnte auch richtig sein :)

Verwandte Themen