简体   繁体   中英

How to rename a file in C#

Consider:

strPath= c:\images\gallery\add.gif

I need to rename this file from add.gif to thumb1.gid , and I should write one command method, whatever the file name. We need to replace that name with this like below.

string strfilename = **"thumb"**

****Result thum.gif**

strPath= c:\\images\\gallery\\thum.gif **

You have several problems, looking up the value in the XML file, and renaming the file.

To look up the number corresponding to Gallery2 or whatever, I would recommend having a look at Stack Overflow question How to implement a simple XPath lookup which explains how to look up nodes/values in an XML file.

To rename a file in .NET, use something like this:

using System.IO;

FileInfo fi = new FileInfo("c:\\images\\gallery\\add.gif");
if (fi.Exists)
{
    fi.MoveTo("c:\\images\\gallery\\thumb3.gif");
}

Of course, you would use string variables instead of string literals for the paths.

That should give you enough information to piece it together and solve your particular lookup-rename problem.

I created a utility method to help encapsulate how to rename a file.

    public class FileHelper 
    {
        public static void RenameFile(string oldFilenameWithPathWithExtension, string newFilenameWithoutPathWithExtension)
        {
            try 
            {
                string directoryPath = Path.GetDirectoryName(oldFilenameWithPathWithExtension);
                if (directoryPath == null)
                {
                    throw new Exception($"Directory not found in given path value:{oldFilenameWithPathWithExtension}");
                }

                var newFilenameWithPath = Path.Combine(directoryPath, newFilenameWithoutPathWithExtension);
                FileInfo fileInfo = new FileInfo(oldFilenameWithPathWithExtension);
                fileInfo.MoveTo(newFilenameWithPath);
            }
            catch (Exception e)
            {
                //Boiler plate exception handling
                Console.WriteLine(e);
                throw;
            }
        }
    }

I omitted several other file system checks that could optionally be done, but as @JoelCoehoorn pointed out in a comment on this page, the File System is Volatile, so wrapping it in a try-catch may be all that is necessary.

With that class in your library, now you can simply call:

            var fullFilename = @"C:\images\gallery\add.gif";
            var newFilename = "Thumb.gif";
            FileHelper.RenameFile(fullFilename,newFilename);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM