777 Stimmen

Umbenennen einer Datei in C#

Wie kann ich eine Datei mit C# umbenennen?

2 Stimmen

Ich würde ungern hinzufügen, dass es ein Problem hier alle Lösungen hier vor allem, wenn Sie tun, vergleicht und verschieben die Datei von einem Speicherort zu einem anderen (Verzeichnis sowie Dateiname) insofern, als Sie sollten sich bewusst sein, dass ein Datenträger ein Knotenpunkt sein könnte... also wenn newname ist q: \SomeJunctionDirectory\hello.txt und der alte Name ist c: \TargetOfJunctionPoint\hello.txt... Die Dateien sind identisch, aber die Namen sind es nicht.

1196voto

Chris Taylor Punkte 50950

Werfen Sie einen Blick auf System.IO.File.Move die Datei unter einem neuen Namen "verschieben".

System.IO.File.Move("oldfilename", "newfilename");

23 Stimmen

Diese Lösung funktioniert nicht, wenn sich die Dateinamen nur in der Groß- und Kleinschreibung unterscheiden. Zum Beispiel Datei.txt und Datei.txt

3 Stimmen

@SepehrM, ich habe es gerade noch einmal überprüft und es funktioniert auf meinem Windows 8.1-Rechner einwandfrei.

0 Stimmen

Ich bin mir nicht sicher, warum das passiert, aber sehen Sie sich diese Beiträge an: stackoverflow.com/questions/8152731/ y codeproject.com/Tipps/365773/

152voto

Aleksandar Vucetic Punkte 14287
System.IO.File.Move(oldNameFullPath, newNameFullPath);

59voto

Mohamed Alikhan Punkte 1227

In der Methode File.Move wird die Datei nicht überschrieben, wenn sie bereits vorhanden ist. Und es wird eine Ausnahme ausgelöst.

Wir müssen also prüfen, ob die Datei existiert oder nicht.

/* Delete the file if exists, else no exception thrown. */

File.Delete(newFileName); // Delete the existing file if exists
File.Move(oldFileName,newFileName); // Rename the oldFileName into newFileName

Oder umgeben Sie es mit einem Try-Catch, um eine Ausnahme zu vermeiden.

29 Stimmen

Seien Sie sehr vorsichtig mit diesem Ansatz... wenn Ihr Zielverzeichnis und Ihr Quellverzeichnis gleich sind und der "newname" tatsächlich eine Version von "oldFileName" ist, die Groß- und Kleinschreibung beachtet, wird die Datei gelöscht, bevor Sie eine Chance haben, sie zu verschieben.

2 Stimmen

Sie können auch nicht einfach die Zeichenketten auf Gleichheit prüfen, da es mehrere Möglichkeiten gibt, einen einzelnen Dateipfad darzustellen.

3 Stimmen

File.Move hat jetzt eine Überladungsmethode, mit der Sie die Datei überschreiben können - File.Move(oldPath, newPath, true)

49voto

Nogro Punkte 524

Einfach hinzufügen:

namespace System.IO
{
    public static class ExtendedMethod
    {
        public static void Rename(this FileInfo fileInfo, string newName)
        {
            fileInfo.MoveTo(fileInfo.Directory.FullName + "\\" + newName);
        }
    }
}

Und dann...

FileInfo file = new FileInfo("c:\test.txt");
file.Rename("test2.txt");

0 Stimmen

... " \\ " + newName + fileInfo.Extension

45 Stimmen

Eww... Verwenden Sie Path.Combine(), anstatt die Datei zu assemblieren.

39voto

Franci Penov Punkte 73239

Sie können verwenden File.Move um es zu tun.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X