Dateien verschieben

TresPuntos

Cadet 4th Year
Registriert
Juni 2018
Beiträge
113
Hallo,

habe folgendes Problem:
Ich habe es geschafft, dass mein Code aus einem bestimmten Pfad einige Dateien kopiert und in ein neues Verzeichnis hinzufügt.
Ich hab eine Listbox aus der alle markierten Dateien in den neuen Ordner hinzugefügt werden sollten.
Mir gelingt es aber nicht den Ordner Pfad3 und seine Unterordner durch den Code zu erstellen.
Das klappt bisher nur wenn ich den Pfad3 Ordner selber erstelle.
C:\Users\Bsp\Pfad1\GehtsWeiter\Erfolgreich.txt diese Datei wird zum Beispiel nicht erstellt, weil es den Unterordner GehtsWeiter nicht gibt.

Mein bisheriger Code:
public void DateienVerschieben()
{
string sourceDir = @"C:\Users\Bsp\Pfad1\";
string backupDir = @"C:\Users\Bsp\Pfad3\";

try
{
// Copy text files.
foreach (string f in lstPfad1.SelectedItems)
{

try
{
// Will not overwrite if the destination file already exists.
File.Copy(Path.Combine(sourceDir, f), Path.Combine(backupDir, f));
}

// Catch exception if the file was already copied.
catch (IOException copyError)
{
Console.WriteLine(copyError.Message);
}
}
}

catch (DirectoryNotFoundException dirNotFound)
{
Console.WriteLine(dirNotFound.Message);
}
}
 
Zuletzt bearbeitet:
Directory.CreateDirectory erzeugt alle Ordner falls sie nicht existieren.

In deinem Fall
Directory.CreateDirectory(backupDir);


Besser noch du machst folgendes:
C#:
Directory.CreateDirectory(backupDir);

foreach (string f in lstPfad1.SelectedItems)
{
  // Wenn f = C:\Users\Bsp\Pfad1\GehtsWeiter\Erfolgreich.txt
  // enthaelt directoryName = C:\Users\Bsp\Pfad1\GehtsWeiter
  string directoryName = Path.GetDirectoryName(f);
  Directory.CreateDirectory(directoryName);
  // Datei kopieren usw.
  // Nicht vergessen fehler abzufangen
}
 
Zuletzt bearbeitet:
Vielen Dank! Hast mir enorm geholfen :)
Falls hier jemand auf den Feed stößt und dieselbe Frage hat, meine Lösung ist (ob die gut oder zu schlecht ist müsst ihr für euch entscheiden):
public void DateienVerschieben()
{
string sourcePath = @"C:\Bsp\Documents\Pfad1\";
string targetPath = @"C:\Bsp\Documents\Pfad3\";
try
{
foreach (String Help in lstPfad1.SelectedItems)
{
string sourceFile = System.IO.Path.Combine(sourcePath, Help);
string destFile = System.IO.Path.Combine(targetPath, Help);
String directoryName= Path.GetDirectoryName(destFile);

if (!System.IO.Directory.Exists(directoryName))
{
DirectoryInfo di = Directory.CreateDirectory(directoryName);
}
System.IO.File.Copy(sourceFile, destFile, true);

if (System.IO.Directory.Exists(sourcePath))
{
destFile = System.IO.Path.Combine(targetPath, Help);
System.IO.File.Copy(sourceFile, destFile, true);
}
else
{
Console.WriteLine("Source path does not exist!");
}
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
directoryName musste ich nochmal so auflisten, weil in der Listbox den Path nach C:\Bsp\Documents\Pfad1\ anzeigen lasse, somit musste ich den gesamten Pfad nochmal kürzen.
 
Zurück
Oben