Hat schonmal jemand mit .NET versucht, die Groß-/Kleinschreibung von Dateinamen zu ändern? Wollte grad mal einen Multirenamer schreiben (ich will jetzt keine Links zu "gibt's doch schon hier"!) und habe dazu die FileInfo.MoveTo bzw. File.Move-Methoden genutzt.
Wenn man aber nur Groß-/Kleinschreibung ändert, verursacht das eine Exception, weil .NET beide Dateien für gleich hält ("Eine Datei kann nicht erstellt werden, wenn sie bereits vorhanden ist.").
Auch WinAPI bringt diesmal leider nichts, MoveFileEx macht garkeine Änderungen dann.
Das Kopieren der Dateien will ich nicht als Lösung betrachten (da sind ja auch recht große Dateien zwischen). Das Verschieben in einen temporären Ordner und dann wieder zurückschieben find' ich jetzt auch recht unsauber.
Vielleicht hat jemand den heißen Tipp?
Hier nochmal als Referenz mein Code:
List<FileInfo> files = GetFilesRecursive(_sourceFolder);
foreach (FileInfo file in files)
{
string newFileName = String.Empty;
if (rbConversion1.Checked)
{
string fileName = Path.GetFileNameWithoutExtension(file.Name);
string fileExtension = Path.GetExtension(file.Name);
fileName = fileName[0].ToString().ToUpper() + fileName.Substring(1).ToLower();
fileExtension = fileExtension.ToLower();
newFileName = fileName + fileExtension;
}
if (file.Name != newFileName)
{
file.MoveTo(newFileName); // IOException: Eine Datei kann nicht erstellt werden, wenn sie bereits vorhanden ist.
}
Alles anzeigen