Hi!
Ich habe eine List<string> mit folgendem Inhalt:
Ich bin Zeile 1
...und ich Zeile 2
Naja und hier geht's weiter
na denn....
Ich möchte nun alle Dateien in einem Ordner einlesen und die Datei-Namen gemäß dem Inhalt meiner List ändern.
Also aus "Dateiname 1" wird "Ich bin Zeile 1" usw...
Den Ordner-Inhalt lasse ich mir mit dieser Methode aufrufen:
public List<string> GetOrdnerInhalt(string ordnerName)
{
//Unnötigt - nur für Fehlermeldung im catch-Block!! Klären im Forum was sinnvoll ist wenn return- Wert wichtig!!!!
List<string> fehler = new List<string>();
try
{
//Liste erzeugen
List<string> fileList = new List<string>();
//DirectoryInfo-Objekt erzeugen
DirectoryInfo di = new DirectoryInfo(ordnerName);
//Dateien ermitteln und in Array speichern
FileInfo[] files = di.GetFiles();
//Alle Dateien durchgehen und den Namen in Liste speichern
foreach (FileInfo file in files)
{
//Console.WriteLine(file.Name);
fileList.Add(file.Name);
}
return fileList;
}
catch (UnauthorizedAccessException UAEx)
{
Console.WriteLine(UAEx.Message);
return fehler; //Unnötigt - nur für Fehlermeldung im catch-Block!! Klären im Forum was sinnvoll ist wenn return- Wert wichtig!!!!
}
catch (PathTooLongException PathEx)
{
Console.WriteLine(PathEx.Message);
return fehler; //Unnötigt - nur für Fehlermeldung im catch-Block!! Klären im Forum was sinnvoll ist wenn return- Wert wichtig!!!!
}
catch (IOException ex)
{
Console.WriteLine("Fehler beim Ermitteln der Dateien" + ex);
return fehler; //Unnötigt - nur für Fehlermeldung im catch-Block!! Klären im Forum was sinnvoll ist wenn return- Wert wichtig!!!!
}
}
Muss ich dann beide Listen "abgleichen"!? Hmmm stehe "dezenzt" auf dem Schlauch.
Ich danke euch schon jetzt für eure Mühe und wünsche ein schönes Wochenende 😃
Was ist jetzt die Frage?
Auch im Grundlagenforum gilt [Hinweis] Wie poste ich richtig? Punkt 5
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Sorry für die falsche Fragestellung - Muss ich dann beide Listen "abgleichen"!? Um die Dateien umzubenennen?
Die Methode "File.Move" möchte ja zwei strings... ich habe aber zwei List<string> .
Folgendes funktioniert also leider nicht
foreach (string elem in listeDateien)
{
File.Move(elem,???);
}
Mal der Verweis auf die MSDN. Also F1.
Deine mühsam zusammengefrickelte Liste von Dateinamen bekommst du auch mit Directory.GetFiles(). So nun weißt du deine Ausgangsnamen.
Je nachdem, welche Regeln du aufgestellt hast (z.B. Datei[x].Name = ListeNeueNamen[x]) kannst du mit der File.Move() Methode alle Dateien umbennen. Wo ist das Problem?
EDIT: Lies dir auch nochmal [Hinweis] Wie poste ich richtig? durch.
EDIT2: Wie's aussieht solltest du dich dringend mit den Grundlagen strukturiert auseinandersetzen. Deshalb gugge hier http://openbook.galileocomputing.de/visual_csharp_2012/ und hier [FAQ] Wie finde ich den Einstieg in C#?
Wenn du die Liste einfach abarbeiten möchtest, ohne zu prüfen, ob der zuvergebene Dateiname zu der Datei passt, dann lasse einen Couter mitlaufen und somit auf Listenelemente zugreifen, e.g.
int i = 0;
int max = deineStringListe.Count;
foreach (string elem in listeDateien)
{
if (i<max)
{
File.Move(elem,Path.Combine("Zielpfad",deineStringListe[i]));
}
i++;
}
BTW.: Solche primitive Sache sollte man von selbst drauf kommen, ist dies nicht der Fall, dann ist man IMHO nicht zum Programmierer geeignet. Es gibt hier zwar Anfängerbereich, aber man soll's nicht übertreiben. Streng dich also an. 😉
**:::
@vbprogger: Danke für den Deankanstoss > hat mein Problem gelöst.
Danke für eure Hilfe