ERLEDIGT
JA
JA
ANTWORTEN
7
7
ZUGRIFFE
9835
9835
EMPFEHLEN
-
Hi
Ich möchte in C# einen Ordner mit Inhalt kopieren
Ich finde allerdings keinen passenden Befehl
Code C#:1
Directory.Move(quelle, ziel)
verschiebt ja leider nur den Inhalt
Die Directory-Class kann sonst alles was ich brauch nur eben nicht kopieren
versteh des System auch nicht ganz wenn ich was verschiben kann kann ich es doch auch kopieren oder?Wer frägt ist 5min ein Trotel.
Wer nicht frägt sein leben lang.
"Der Typ unter mir ..." - REGELN:
1. Man darf nur dann antworten wenn die Beschreibung von dem Typ über einem auch wirklich zutrifft
2. Meldet sich länger als 12 Stunden keiner ist davon auszugehen das es solch einen Typen nicht gibt und es darf weiter gemacht werden
3. Typ wird wenn gewünscht durch "User" ersetzt
Nach dem Beschluss http://www.tutorials.de/fun-forum/24...ml#post1304688
und Folgende
-
21.07.06 13:14 #2
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Grundlegend unterscheided sich das Kopieren und Verschieben ziemlich. Ein Verschieben erfolgt lediglich durch eine Änderung im Dateisystem. Der Aufwand ist zudem ziemlich gering und die Aktion geht fast augenblicklich (in konstanter Zeit) vonstatten. Das Kopieren einer Datei (bzw. eines Ordners mit allen Dateien und Unterordnern) erfordert das eine komplette Kopie der Daten und der Verzeichnisstruktur in einem anderen Order erstellt wird. Deshalb ist es auch nicht möglich mit der Directory.Move Methode ein Verzeichnis bzw. eine Datei von einem Laufwerk auf ein anderes zu bewegen (es würde das Kopieren der Daten und der Struktur und letzendlich das Löschen des Originalordners erfordern).
Zitat von Kieren
Eine Datei kannst du mit der Copy Methode von System.IO.File kopieren. Willst du ein Verzeichnis komplett kopieren mußt du rekursiv durch das Verzeichnis durchgehen, die Verzeichnisstruktur im Zielverzeichnis anlegen und die Dateien einzeln dorthin kopieren. \edit: {Zum Schluss mußt du dann noch alle Dateien, Unterverzeichnisse und das Verzeichnis selbst löschen.} Also löschen mußt du natürlich nur beim Verschieben, beim Kopieren natürlich nicht.
GrußGeändert von deepthroat (21.07.06 um 14:24 Uhr)
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Danke, gleich mal ausprobieren
Wer frägt ist 5min ein Trotel.
Wer nicht frägt sein leben lang.
"Der Typ unter mir ..." - REGELN:
1. Man darf nur dann antworten wenn die Beschreibung von dem Typ über einem auch wirklich zutrifft
2. Meldet sich länger als 12 Stunden keiner ist davon auszugehen das es solch einen Typen nicht gibt und es darf weiter gemacht werden
3. Typ wird wenn gewünscht durch "User" ersetzt
Nach dem Beschluss http://www.tutorials.de/fun-forum/24...ml#post1304688
und Folgende
-
Warum nicht erst mal die Suchfunktion verwenden?

Folder Copy - ThreadMfG,
Christian
Wer sein Problem definiert, hat es schon halb gelöst!
Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.
The Code Project! - C# Programming | C# / VB.NET Pendants
Regeln + Netiquette
Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
und vor allem nicht auf das, was euch die IHK dazu erzählt!
Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...
-
Zitat von Christian Kusmanow
danke
Ich hatte zwar auch die Suchfunktion mit "copy" "folder" "direktory" "kopieren" "ordner"
benutzt aber hab den Thread nicht gefunden
oder übersehen bzw wegen falscher Programmiersprache ignoriert
Ich hab jetzt in google eine VB.NET version gefunden
und mach die grad zu C#
Aber die aus dem thread schau auch gut aus mal schauen was beser
Wenn meine c#-Funkion funktioniert lass ich euch auf jeden fall drann teilhaben
danke fürs raussuchen von dem ThreadWer frägt ist 5min ein Trotel.
Wer nicht frägt sein leben lang.
"Der Typ unter mir ..." - REGELN:
1. Man darf nur dann antworten wenn die Beschreibung von dem Typ über einem auch wirklich zutrifft
2. Meldet sich länger als 12 Stunden keiner ist davon auszugehen das es solch einen Typen nicht gibt und es darf weiter gemacht werden
3. Typ wird wenn gewünscht durch "User" ersetzt
Nach dem Beschluss http://www.tutorials.de/fun-forum/24...ml#post1304688
und Folgende
-
Erstmal die orignal VB.NET Funktion http://www.bubble-media.com/cgi-bin/...es/000026.html
Code VB:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
' Recursively copy all files and subdirectories from the ' specified source to the specified destination. Private Sub RecursiveCopyFiles( _ ByVal sourceDir As String, _ ByVal destDir As String, _ ByVal fRecursive As Boolean, ByVal overWrite As Boolean) Dim i As Integer Dim posSep As Integer Dim sDir As String Dim aDirs() As String Dim sFile As String Dim aFiles() As String ' Add trailing separators to the supplied paths if they don't exist. If Not sourceDir.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString()) Then sourceDir &= System.IO.Path.DirectorySeparatorChar End If If Not destDir.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString()) Then destDir &= System.IO.Path.DirectorySeparatorChar End If ' Recursive switch to continue drilling down into dir structure. If fRecursive Then ' Get a list of directories from the current parent. aDirs = System.IO.Directory.GetDirectories(sourceDir) For i = 0 To aDirs.GetUpperBound(0) ' Get the position of the last separator in the current path. posSep = aDirs(i).LastIndexOf(@"\") ' Get the path of the source directory. sDir = aDirs(i).Substring((posSep + 1), aDirs(i).Length - (posSep + 1)) ' Create the new directory in the destination directory. System.IO.Directory.CreateDirectory(destDir + sDir) ' Since we are in recursive mode, copy the children also RecursiveCopyFiles(aDirs(i), (destDir + sDir), fRecursive, overWrite) Next End If ' Get the files from the current parent. aFiles = System.IO.Directory.GetFiles(sourceDir) ' Copy all files. For i = 0 To aFiles.GetUpperBound(0) ' Get the position of the trailing separator. posSep = aFiles(i).LastIndexOf(@"\") ' Get the full path of the source file. sFile = aFiles(i).Substring((posSep + 1), aFiles(i).Length - (posSep + 1)) Try ' Copy the file. System.IO.File.Copy(aFiles(i), destDir + sFile, False) addToConsoleWindow("Copied " & sFile & " to " & destDir) Catch ex As Exception If overWrite = False Then errorBoxShow(ex.Message) addToConsoleWindow("Skipping..." & ex.Message) Else System.IO.File.Copy(aFiles(i), destDir + sFile, True) addToConsoleWindow("Overwriting old " & sFile & " in " & destDir) End If End Try Next i End Sub
Und jetzt noch die auf C# umgebaute Funktion
Code C#:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
/*Recursively copy all files and subdirectories from the specified source to the specified destination.*/ static void RecursiveCopyFiles(string sourceDir, string destDir, bool fRecursive, bool overWrite) { int i = 0; int posSep = 0; string sDir = null; string[] aDirs = null; string sFile = null; string[] aFiles = null; /*Add trailing separators to the supplied paths if they don't exist.*/ if (!sourceDir.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString())) { sourceDir += System.IO.Path.DirectorySeparatorChar; } if (!destDir.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString())) { destDir += System.IO.Path.DirectorySeparatorChar; } /*Recursive switch to continue drilling down into dir structure.*/ if (fRecursive) { /*Get a list of directories from the current parent.*/ aDirs = System.IO.Directory.GetDirectories(sourceDir); for (i = 0; i<=aDirs.GetUpperBound(0); i++) { /*Get the position of the last separator in the current path.*/ posSep = aDirs[i].LastIndexOf(@"\""); /*Get the path of the source directory.*/ sDir = aDirs[i].Substring((posSep + 1), aDirs[i].Length - (posSep + 1)); /*Create the new directory in the destination directory.*/ System.IO.Directory.CreateDirectory(destDir + sDir); /*Since we are in recursive mode, copy the children also*/ RecursiveCopyFiles(aDirs[i], (destDir + sDir), fRecursive, overWrite); } } /*Get the files from the current parent.*/ aFiles = System.IO.Directory.GetFiles(sourceDir); /*Copy all files.*/ for (i = 0; i<= aFiles.GetUpperBound(0); i++) { /*Get the position of the trailing separator.*/ posSep = aFiles[i].LastIndexOf(@"\""); /*Get the full path of the source file.*/ sFile = aFiles[i].Substring((posSep + 1), aFiles[i].Length - (posSep + 1)); try { /*Copy the file.*/ System.IO.File.Copy(aFiles[i], destDir + sFile, false); Console.WriteLine("Copied " + sFile + " to " + destDir); } catch (Exception ex) { if (overWrite == false) { Console.WriteLine("Skipping..." + ex.Message); } else { System.IO.File.Copy(aFiles[i], destDir + sFile, true); Console.WriteLine("Overwriting old " + sFile + " in " + destDir); } } } }
ACHTUNG: (@"\"") bitte durch (@"\") esrsetzen
Sonst zerstört es aber leider des Highlight
Ich schreib das hier auch noch in den andern Thread dann findet der nächste Suchende es eventuel auch *G*Geändert von Kieren (21.07.06 um 14:39 Uhr)
Wer frägt ist 5min ein Trotel.
Wer nicht frägt sein leben lang.
"Der Typ unter mir ..." - REGELN:
1. Man darf nur dann antworten wenn die Beschreibung von dem Typ über einem auch wirklich zutrifft
2. Meldet sich länger als 12 Stunden keiner ist davon auszugehen das es solch einen Typen nicht gibt und es darf weiter gemacht werden
3. Typ wird wenn gewünscht durch "User" ersetzt
Nach dem Beschluss http://www.tutorials.de/fun-forum/24...ml#post1304688
und Folgende
-
21.07.06 14:56 #7
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Der Programmierer scheint allerdings anzunehmen, das des Trennzeichen für Pfade immer ein Backslash ist. Das funktioniert dann unter Unix spätestens nicht mehr oder wenn der Benutzer den System.IO.Path.AltDirectorySeperatorChar verwendet.
Es gibt extra Funktionen in System.IO.Path damit man nicht selbst mit irgendwelchen String-Funktionen Pfade auseinander klamüsern muß:
- System.IO.Path.Combine
- System.IO.Path.GetDirectoryName
- System.IO.Path.GetFileName etc.
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Gut möglich aber des Ding wird so wie es aussieht genau 1mal laufen
und das unter windoof
von daher hab ich an solche Sachen nicht gedacht
aber trotzdem dankeWer frägt ist 5min ein Trotel.
Wer nicht frägt sein leben lang.
"Der Typ unter mir ..." - REGELN:
1. Man darf nur dann antworten wenn die Beschreibung von dem Typ über einem auch wirklich zutrifft
2. Meldet sich länger als 12 Stunden keiner ist davon auszugehen das es solch einen Typen nicht gibt und es darf weiter gemacht werden
3. Typ wird wenn gewünscht durch "User" ersetzt
Nach dem Beschluss http://www.tutorials.de/fun-forum/24...ml#post1304688
und Folgende
Ähnliche Themen
-
Bilder aus anderen Ordner mit ../ordner/image2.gif richtig einbinden?
Von Herr_M im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 6Letzter Beitrag: 26.11.08, 00:05 -
Beim Ordner auslesen leere Ordner abfangen
Von Claas M im Forum PHPAntworten: 3Letzter Beitrag: 22.04.07, 00:33 -
Gesamten Ordner auf Server Laden - alten Ordner löschen
Von -GS-Master im Forum PHPAntworten: 1Letzter Beitrag: 30.01.07, 16:27 -
Wie kann ich die Dateien bzw. Ordner in einem Ordner auslesen?
Von D@nger im Forum PHPAntworten: 6Letzter Beitrag: 21.05.06, 17:50 -
Ordner per php erstellen, links zu allen dateien im ordner
Von Kamephis im Forum PHPAntworten: 3Letzter Beitrag: 12.06.04, 00:52





Zitieren
Login





