TresPuntos
Cadet 4th Year
- Registriert
- Juni 2018
- Beiträge
- 113
Hallo Leute,
die Anforderung ist es alle Dateien aus dem Pfad C:\Beispiel\Test zu lesen. Wenn der Dateiname in meiner ListBox enthalten ist, muss die Datei in das Verzeichnis C:Beispiel\Hilfsdatei\ListboxName\ (sieht meistens so aus: ListboxName_functions.txt) . Wenn der Name nicht in der Listbox enthalten ist, muss diese in C:\Beispiel\Unbrauchbar\ (heißt dann beispielsweise so: functions.txt ). Sprich wenn der Name enthalten ist, muss die Datei auch in sein entsprechendes Verzeichnis rein. Die Datei mit functions.txt muss in das Verzeichnis der Rest eigentlich unter die jeweiligen Namen. Mit dem If habe ich bereits die functions.txt abgefangen, aber ich weiß nicht wie ich das mit dem ListboxItemNamen und dem jeweiligen Verzeichnis mache, habe jetzt mal provisorisch ein if und foreach eingefügt. Habe beim 2. If-Else ein return eingefügt, falls es noch eine unvorhergesehene Datei gibt.
die Anforderung ist es alle Dateien aus dem Pfad C:\Beispiel\Test zu lesen. Wenn der Dateiname in meiner ListBox enthalten ist, muss die Datei in das Verzeichnis C:Beispiel\Hilfsdatei\ListboxName\ (sieht meistens so aus: ListboxName_functions.txt) . Wenn der Name nicht in der Listbox enthalten ist, muss diese in C:\Beispiel\Unbrauchbar\ (heißt dann beispielsweise so: functions.txt ). Sprich wenn der Name enthalten ist, muss die Datei auch in sein entsprechendes Verzeichnis rein. Die Datei mit functions.txt muss in das Verzeichnis der Rest eigentlich unter die jeweiligen Namen. Mit dem If habe ich bereits die functions.txt abgefangen, aber ich weiß nicht wie ich das mit dem ListboxItemNamen und dem jeweiligen Verzeichnis mache, habe jetzt mal provisorisch ein if und foreach eingefügt. Habe beim 2. If-Else ein return eingefügt, falls es noch eine unvorhergesehene Datei gibt.
Code:
private void CopyDirectoryMitIfAbfrage()
{
//in der Textbox soll der auszulesende Pfad eingegeben werden (mit einer eigenen Methode die den Pfad mit einem \ beendet)
string sourcePath = PfadRichtigAusgeben(TxtPfadAuslesen.Text);
// diese Klasse wird zum Auslesen des Verzeichnisinhaltes benötigt
DirectoryInfo ds = new DirectoryInfo(sourcePath);
try
{
//Rekursiver Aufruf vom "Suchordner"
foreach (DirectoryInfo d in ds.GetDirectories())
{
//Wenn in Listbox existiert, hier weiß ich nicht weiter, ein Foreach müsste hier doch auch sein?
if (d.Name == "functions.txt" )
{
//dann nimmt er den ListboxName und fügt es in seinen Pfad
String targetPath = @"C:\Beispiel\Unbrauchbar\";
DirectoryInfo kds = new DirectoryInfo(targetPath); // diese Klasse wird zum Auslesen des Verzeichnisinhaltes benötigt
// Zielverzeichnis anlegen falls noch nicht vorhanden
if (!Directory.Exists(targetPath))
Directory.CreateDirectory(targetPath);
// Rekursiv CoypDirectory() mit allen Unterverzeichnissen aufrufen,
// auch im Zielordner die Verzeichnisstruktur beibehalten.
foreach (DirectoryInfo k in ds.GetDirectories())
{
CopyDirectory(d.FullName, targetPath + "\\" + d.Name);
}
// Alle Dateien in ds durchlaufen, GetFiles() liefert jedoch kein File - Objekt sondern ein FileInfo - Objekt zurück.
// Dieses besitzt aber ähnliche Eigenschaften, MoveTo() und CopyTo() sind z.B. auch vorhanden.
foreach (FileInfo f in ds.GetFiles())
{
f.CopyTo(targetPath + "\\" + f.Name, true);
}
}
// habe mal ein foreach drinnen und ifelse weiß aber nicht wie sie zu nutzen sind
else
{
foreach ()
{
if ()
{
//dann nimmt er den ListboxName und fügt es in seinen Pfad
String targetPath = @"C:\Beispiel\Hilfsdatei\" + ListBoxName.SelectedItems;
DirectoryInfo kds = new DirectoryInfo(targetPath); // diese Klasse wird zum Auslesen des Verzeichnisinhaltes benötigt
// Zielverzeichnis anlegen falls noch nicht vorhanden
if (!Directory.Exists(targetPath))
Directory.CreateDirectory(targetPath);
// Rekursiv CoypDirectory() mit allen Unterverzeichnissen aufrufen,
// auch im Zielordner die Verzeichnisstruktur beibehalten.
foreach (DirectoryInfo k in ds.GetDirectories())
{
CopyDirectory(d.FullName, targetPath + "\\" + d.Name);
}
// Alle Dateien in ds durchlaufen, GetFiles() liefert jedoch kein File - Objekt sondern ein FileInfo - Objekt zurück.
// Dieses besitzt aber ähnliche Eigenschaften, MoveTo() und CopyTo() sind z.B. auch vorhanden.
foreach (FileInfo f in ds.GetFiles())
{
f.CopyTo(targetPath + "\\" + f.Name, true);
}
}
else { return}
}
}
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}