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.

1voto

Amine Fatnassi Punkte 11
// Source file to be renamed  
string sourceFile = @"C:\Temp\MaheshChand.jpg";  
// Create a FileInfo  
System.IO.FileInfo fi = new System.IO.FileInfo(sourceFile);  
// Check if file is there  
if (fi.Exists)  
{  
// Move file with a new name. Hence renamed.  
fi.MoveTo(@"C:\Temp\Mahesh.jpg");  
Console.WriteLine("File Renamed.");  
}

0voto

Amin Golmahalle Punkte 3061
public static class ImageRename
{
    public static void ApplyChanges(string fileUrl,
                                    string temporaryImageName,
                                    string permanentImageName)
    {
        var currentFileName = Path.Combine(fileUrl,
                                           temporaryImageName);

        if (!File.Exists(currentFileName))
            throw new FileNotFoundException();

        var extention = Path.GetExtension(temporaryImageName);
        var newFileName = Path.Combine(fileUrl,
                                       $"{permanentImageName}
                                         {extention}");

        if (File.Exists(newFileName))
            File.Delete(newFileName);

        File.Move(currentFileName, newFileName);
    }
}

0voto

Arsen Khachaturyan Punkte 7275

Ich bin auf einen Fall gestoßen, in dem ich die Datei innerhalb des Event-Handlers umbenennen musste, der bei jeder Datei-Änderung, einschließlich Umbenennung, ausgelöst wurde, und um das ewige Umbenennen der Datei zu überspringen, musste ich sie umbenennen, mit:

  1. Erstellung der Kopie
  2. Entfernen des Originals

    File.Copy(fileFullPath, destFileName); // Both have the format of "D:....\myFile.ext" Thread.Sleep(100); // Wait for the OS to unfocus the file File.Delete(fileFullPath);

0 Stimmen

Wenn Sie einen using-Block verwenden, können Sie thread.sleep entfernen und das Programm automatisch den Fokus aufheben lassen, richtig?

1 Stimmen

@Zoba, wenn Sie meinten, sich zu bewerben using überlagern File.Copy o File.Delete statischen Methoden, dann sollten Sie wissen, dass dies nicht möglich ist, da beide Methoden void . Zur Verwendung using Anweisung sollte der Rückgabetyp der Methode (einschließlich Konstruktor) das Objekt sein, dessen Typ die IDisposable Schnittstelle.

0voto

Igor Punkte 55
private static void Rename_File(string FileFullPath, string NewName) // nes name without directory actualy you can simply rename with fileinfo.MoveTo(Fullpathwithnameandextension);
        {
            FileInfo fileInfo = new FileInfo(FileFullPath);
            string DirectoryRoot = Directory.GetParent(FileFullPath).FullName;

            string filecreator = FileFullPath.Substring(DirectoryRoot.Length,FileFullPath.Length-DirectoryRoot.Length);

            filecreator = DirectoryRoot + NewName;
            try
            {
                fileInfo.MoveTo(filecreator);
            }
            catch(Exception ex)
            {
                Console.WriteLine(filecreator);
                Console.WriteLine(ex.Message);
                Console.ReadKey();
            }

    enter code here
            // string FileDirectory = Directory.GetDirectoryRoot()

        }

-11voto

Wenn C# eine Funktion nicht hat, verwende ich C++ oder C:

public partial class Program
{
    [DllImport("msvcrt", CallingConvention = CallingConvention.Cdecl, SetLastError = true)]
    public static extern int rename(
            [MarshalAs(UnmanagedType.LPStr)]
            string oldpath,
            [MarshalAs(UnmanagedType.LPStr)]
            string newpath);

    static void FileRename()
    {
        while (true)
        {
            Console.Clear();
            Console.Write("Enter a folder name: ");
            string dir = Console.ReadLine().Trim('\\') + "\\";
            if (string.IsNullOrWhiteSpace(dir))
                break;
            if (!Directory.Exists(dir))
            {
                Console.WriteLine("{0} does not exist", dir);
                continue;
            }
            string[] files = Directory.GetFiles(dir, "*.mp3");

            for (int i = 0; i < files.Length; i++)
            {
                string oldName = Path.GetFileName(files[i]);
                int pos = oldName.IndexOfAny(new char[] { '0', '1', '2' });
                if (pos == 0)
                    continue;

                string newName = oldName.Substring(pos);
                int res = rename(files[i], dir + newName);
            }
        }
        Console.WriteLine("\n\t\tPress any key to go to main menu\n");
        Console.ReadKey(true);
    }
}

26 Stimmen

C# hat durchaus die Möglichkeit, Dateien umzubenennen.

0 Stimmen

Danke, das ist genau das, was ich wollte. Es kann selbst Namen auf eine ausführbare Datei ändern.

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