ERLEDIGT
NEIN
NEIN
ANTWORTEN
10
10
ZUGRIFFE
8967
8967
EMPFEHLEN
-
Hiho, meine Wenigkeit schon wieder.
Gibt es eigetlich eine Funktion wie File.copy(quell,ziel) für komplette Ordner?
Mit dem File.copy bekomme ich irgendwie ne Fehlermeldung das er die Quelle nicht findet obwohl ne MassageBox den richtigen Pfad ausgibt.
Also gehe ich mal davon aus das es was extra gibt für komplette Folder...
Könnt Ihr mir da weiter helfen find irgendwie nichts gescheites dazu.greetz
Cine
-
11.02.05 08:15 #2
- Registriert seit
- Aug 2004
- Beiträge
- 40
Hallo
Du kanst einen kompletten Ordner mit Directory.Move verschieben.
Aber wenn du einen Kompletten Ordner kopieren willst, must du den Ordner Rekrusiv durgehen und die Ordner einzeln erstellen. Danach alle Datein zu den Bestimmungsort kopieren.
Eine Direkte Mothode gibt es meines Wissens nitcht.
-
Hm,
hab ich mir schon fast gedacht, dass es da nicht so einfach ist wie bei den Files
Da stellt sich mir schon gleich die nächste Frage obs da nicht einfacher ist einen saveDialog zu machen, wo der Benutzer den Kram selber machen kann. Obwohl des nicht ganz so der Sinn ist. Der sollte eigetlich nur copy sagen und dann sollte des Proggier das machen....
Hast du für diesen rekrusiven Lösungsvorschlag eine Strategie oder vielleicht mal ein Beispiel bei dem ich ein bischen spicken kann?
Wäre super. Hab da echt (noch) keine Ahnung von.greetz
Cine
-
Aber hier im Foum. -->Suchfunktion
Zitat von Black_Deal
// Edit: Ich war mir eigentlich sicher das der Quellcode für's kopieren noch im Forum ist.
Code :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
public class DirectoryCopy { public static void Main() { new DirectoryCopy(); } private string sourcepath, destpath; ArrayList CollectedFiles = new ArrayList(); public DirectoryCopy() { Console.Write("SourcePath: "); sourcepath = Console.ReadLine(); Console.Write("Dest.Path: "); destpath = Console.ReadLine(); Copy(sourcepath); Console.Read(); } private void Copy(string dir) { if (Directory.Exists(dir)) { foreach (string subdir in Directory.GetDirectories(dir)) { Copy(subdir); } string dest = dir.Replace(sourcepath, destpath); Directory.CreateDirectory(dest); Console.WriteLine("Create Directory: " + dest); foreach (string file in Directory.GetFiles(dir)) { string newfile = file.Replace(sourcepath, destpath); File.Copy(file, newfile); Console.WriteLine("Copy File " + file + " to " + newfile); } } } private void Search ( string Dir, string FileTag ) { if ( Directory.Exists( Dir )){ foreach (string SubDir in Directory.GetDirectories( Dir )) { Search( SubDir, FileTag ); } foreach ( string File in Directory.GetFiles( Dir )){ if ( File.Substring( File.IndexOf( "." ) ) == FileTag ) CollectedFiles.Add( File ); } } } }
MfG cosmoGeändert von Christian Kusmanow (11.02.05 um 10:50 Uhr)
MfG,
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...
-
Hab es jetzt so ist deinem ziemlich ähnlich:
Code :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
public static void filework(string source, string destination) { // Ordner durchgehen foreach (string folder in Directory.GetDirectories(source)) { // Ordnername extrahieren int index = folder.LastIndexOf("\\"); string cop = folder.Substring(index+1); Directory.CreateDirectory(destination + "\\" + cop); // rekursiver aufruf filework(folder,destination + "\\" + cop); } // Dateien durchgehen foreach (string filename in Directory.GetFiles(source)) { int index = filename.LastIndexOf("\\"); string cop = filename.Substring(index+1); if (File.Exists(destination + "\\" + cop)) { File.Delete(destination + "\\" + cop); File.Copy(filename,destination + "\\" + cop); } else { File.Copy(filename,destination + "\\" + cop); } } }greetz
Cine
-
Es gibt da wirklich viele Möglichkeiten sich die Rekursion auszutüfteln.
Das Beispiel war von Norbert Eder oder Alexander Schuc. Weiss nicht mehr genau.
Tipp:
Die doppelten Slashes kannst Du dir spaaren:Das @ bewirkt das die Escape-Sequenzen nicht beachtet werden.Code :1
LastIndexOf( [color=red]@[/color]"\" )
Alternativ gibt es noch denCode :1
Path.DirectorySeparatorChar
könntest Du das dann z.B. auch soCode :1
destination + "\\" + cop
schreiben.Code :1
string.Format("{0}{1}{2}", destination, Path.DirectorySeparatorChar, cop)
Vorrausgesetzt Du gewöhnst Dir mal Boxing an. Das verketten von Stings sieht nicht nur unsauber aus, sondern ist auch langsam.
(bin mir zumindest sicher das ich Das mal in der MSDN gelesen hab).
MfG cosmoMfG,
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...
-
Das @ bewirkt nicht, dass Escape-Sequenzen nicht beachtet werden, sondern dass du als Programmierer sie nicht beachten musst. Intern werden die entsprechenden Chars sehr wohl entsprechend behandelt.
-
Ja, da hast Du recht.

MfG cosmoMfG,
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...
-
Wenn des Proggie mal fertig ist werde ich des ma ausprobieren mit dem @....
Aber erstmal muss des fertig werden damit Cheffe endlich Ruhe gibt. ~g~
Weiß zwar noch net wie ich den nächsten Schritt machen soll, aber mal sehen.
Muss noch einbauen, dass eine html bearbeitet wird. bestimmten punkt suchen, finden, eine Zeile löschen und eine andere hinzufügen....
Naja ma gucken.... newbe halt kann alles etwas dauern bis es klappt. Das wie ist garnicht meinProblem hängt meist an der Umsetzung. Mir fehlen noch zu viele Befehle im Kopf. Aber Übung macht den Meister.
Aber thx noch mal für Eure Hilfe.greetz
Cine
-
Wie schon im anderen Thread angekündigt hier meine Version
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
' 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
/*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 HighlightWer 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
-
09.06.08 15:37 #11iambarth Tutorials.de Gastzugang
Ähnliche Themen
-
Download zip folder from other server via php
Von Paspirgilis im Forum PHPAntworten: 3Letzter Beitrag: 10.02.10, 17:56 -
Folder Access
Von tommy07 im Forum Microsoft WindowsAntworten: 0Letzter Beitrag: 10.02.07, 15:27 -
Folder Suchen
Von Scimitar im Forum Visual Basic 6.0Antworten: 6Letzter Beitrag: 27.01.05, 17:27 -
[PS7] Dateibrowser std. folder?
Von IEN im Forum PhotoshopAntworten: 1Letzter Beitrag: 30.07.03, 22:10 -
Folder: CMYK
Von pauschpage im Forum PhotoshopAntworten: 9Letzter Beitrag: 31.05.03, 16:20





Zitieren
Login




