我如何重命名一个文件使用c# ?


当前回答

注意:在这个示例代码中,我们打开一个目录并搜索PDF文件,文件名中包含开括号和闭括号。您可以检查和替换名称中的任何字符,或者使用替换函数指定一个全新的名称。

从这段代码中还可以使用其他方法来进行更详细的重命名,但我的主要目的是展示如何使用File。移动做批量重命名。当我在我的笔记本电脑上运行它时,它可以处理180个目录中的335个PDF文件。这是一时兴起的代码,还有更详细的方法来实现它。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BatchRenamer
{
    class Program
    {
        static void Main(string[] args)
        {
            var dirnames = Directory.GetDirectories(@"C:\the full directory path of files to rename goes here");

            int i = 0;

            try
            {
                foreach (var dir in dirnames)
                {
                    var fnames = Directory.GetFiles(dir, "*.pdf").Select(Path.GetFileName);

                    DirectoryInfo d = new DirectoryInfo(dir);
                    FileInfo[] finfo = d.GetFiles("*.pdf");

                    foreach (var f in fnames)
                    {
                        i++;
                        Console.WriteLine("The number of the file being renamed is: {0}", i);

                        if (!File.Exists(Path.Combine(dir, f.ToString().Replace("(", "").Replace(")", ""))))
                        {
                            File.Move(Path.Combine(dir, f), Path.Combine(dir, f.ToString().Replace("(", "").Replace(")", "")));
                        }
                        else
                        {
                            Console.WriteLine("The file you are attempting to rename already exists! The file path is {0}.", dir);
                            foreach (FileInfo fi in finfo)
                            {
                                Console.WriteLine("The file modify date is: {0} ", File.GetLastWriteTime(dir));
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.Read();
        }
    }
}

其他回答

看一下System.IO.File。移动,“移动”文件到一个新名称。

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

在文件中。方法,这将不会覆盖文件,如果它已经存在。它会抛出一个异常。

所以我们需要检查文件是否存在。

/* 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

或者用try catch将其包围以避免异常。

System.IO.File.Move(oldNameFullPath, newNameFullPath);

您可以使用File。行动起来吧。

First solution Avoid System.IO.File.Move solutions posted here (marked answer included). It fails over networks. However, copy/delete pattern works locally and over networks. Follow one of the move solutions, but replace it with Copy instead. Then use File.Delete to delete the original file. You can create a Rename method to simplify it. Ease of use Use the VB assembly in C#. Add reference to Microsoft.VisualBasic Then to rename the file: Microsoft.VisualBasic.FileIO.FileSystem.RenameFile(myfile, newName); Both are strings. Note that myfile has the full path. newName does not. For example: a = "C:\whatever\a.txt"; b = "b.txt"; Microsoft.VisualBasic.FileIO.FileSystem.RenameFile(a, b); The C:\whatever\ folder will now contain b.txt.