Neue Antwort schreiben 
 
Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
[.NET] Dateiumbenennung nur Groß-/Kleinschreibung-Änderungen
PacMani
Unregistered

 
Beitrag #1
[.NET] Dateiumbenennung nur Groß-/Kleinschreibung-Änderungen
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:
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.
                }
23.10.2010 17:04
Diese Nachricht in einer Antwort zitieren
niwax Offline
Hardcore-Coder

Beiträge: 3.829
Registriert seit: Dec 2009
Beitrag #2
[.NET] Dateiumbenennung nur Groß-/Kleinschreibung-Änderungen
Intern behandelt NTFS soweit ich weis alles als Großbuchstaben, man kann zwar zur Übersicht auch kleine verwenden, es wird dann aber nichts am Dateinamen an sich verändert. Ich hatte diese Erfaahrung gemacht, als bei einer Tagänderung mit der Leiste da unten im Explorer der Speichern-Button nicht erschienen ist, weil ich nur Groß/Kleinschreibung geändert hab.
Du kannst aber doppeltes Umbenennen (erst ne 1 dranhängen, dann das eigentlliche Umbenennen) versuchen.


23.10.2010 17:38
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
PacMani
Unregistered

 
Beitrag #3
[.NET] Dateiumbenennung nur Groß-/Kleinschreibung-Änderungen
Das klingt nach einer guten Idee, ich probier's gleich mal aus.

Habe es jetzt so gelöst... ist noch etwas verbesserungswürdig.
Code:
List<FileInfo> files = GetFilesRecursive(_sourceFolder);
            foreach (FileInfo file in files)
            {
                string newFileName = String.Empty;
                string filePath = Path.GetDirectoryName(file.FullName);

                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;  
                }
                file.MoveTo(filePath + Path.DirectorySeparatorChar + newFileName + ".tmp");
                file.MoveTo(filePath + Path.DirectorySeparatorChar + newFileName);
                bwRename.ReportProgress(0);
            }
23.10.2010 17:43
Diese Nachricht in einer Antwort zitieren
Neue Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste