随笔 - 748  文章 - 1  评论 - 107  阅读 - 34万

【转】[C#] 重命名文件夹

转自:https://jhrs.com/2022/45307.html

C#重命名文件夹

通过C#代码对文件夹进行重命名也是常见功能或需求,而在网上搜索到的常见代码都是通过先创建新目录,然后移动原来的文件到新目录的方式,大概所能见到的代码如下所示:

//步骤1,先创建新目录,当前步骤非必须
Directory.CreateDirectory(destinationDir);

//步骤2,找到文件,并移动
FileInfo file = new FileInfo(srcFileName);
file.MoveTo(destFileName);

以前只是常见的示例代码,事实上都是需要进行文件移动操作,那么有没有像我们使用鼠标右键,选中文件夹直接重命名的方法呢?答案是有的,还是利用FileSystem类提供的方法,如下:

//这个就是重命名目录的方法,https://jhrs.com(江湖人士,国外网赚)让你回答,是不是很简单呢?
FileSystem.RenameDirectory(sourceDir, destDir);

C#重命名文件

重命名文件的需求经常出现在上传功能时,用户上传的文件服务器端需要对它进行重命名,通常会写出网上常见的类似代码:

File.Move(),File.Copy() 版本的:

复制代码
string src = @"原文件路径:C:\jhrs\com\old.file";
string dest = @"新文件路径:C:\jhrs\com\new.file";

try
{
    File.Move(src, dest);

    if (!File.Exists(src))
    {
        Console.WriteLine("jhrs.com提示:文件重命名成功.");
    }
}
catch (IOException e)
{
    Console.WriteLine("jhrs.com提示:{0}", e.ToString());
}

//或者通过复制文件方式
File.Copy(src, dest, true);
File.Delete(src);
复制代码

有了上面的知识,我们可以类推得出,同样的我们可以使用FileSystem提供的方法对文件进行重命名了。

//这个就是重命名文件的方法,https://jhrs.com(江湖人士,国外网赚)让你回答,是不是很简单呢?
FileSystem.RenameFile(oldFile, newFile);

C#移动文件

文件操作常见功能就是移动文件,微软官网文档也给了示例文档,这是官网链接:

https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/file-system/how-to-copy-delete-and-move-files-and-folders

其它的代码这里就暂不举例了。直接上答案吧。

//这个就是移动文件的方法,https://jhrs.com(江湖人士,国外网赚)让你回答,是不是很简单呢?
FileSystem.MoveFile(sourceFileName,destinationFileName)

C#移动目录

当你通过代码移动目录时,如果被移动的目录文件非常的大,再通过递归遍历/循环遍历目录里面的文件进行移动是非常低效的做法。FileSystem提供了现成的方法,你可以调用它来移动目录,经测试效率非常高。

//这个就是移动目录的方法,https://jhrs.com(江湖人士,国外网赚)让你回答,是不是很简单呢? 
FileSystem.MoveDirectory(sourceDirectoryName, destinationDirectoryName)

最后说一下,你也可以调用 FileSystem.DeleteDirectory 方法删除目录,其它的方法,自己在VS里面看一下提示吧,基本上从命名我们就知道它实现的是什么功能。需要注意的是,被删除的文件或者目录如果有只读属性需要给它去掉。

复制代码
/// <summary>
/// 递归去除文件,jhrs.com 首发,目录的只读属性
/// </summary>
/// <param name="dir"></param>
private void RemoveDirReadOnley(DirectoryInfo dir)
{
    dir.Attributes &= ~FileAttributes.ReadOnly;
    var files = dir.GetFiles();
    Parallel.ForEach(files, (f) =>
    {
        f.Attributes &= ~FileAttributes.ReadOnly;
    });

    var dires = dir.GetDirectories();
    Parallel.ForEach(dires, (f) =>
    {
        f.Attributes &= ~FileAttributes.ReadOnly;
        files = f.GetFiles();
        Parallel.ForEach(files, (m) =>
        {
            m.Attributes &= ~FileAttributes.ReadOnly;
        });
        RemoveDirReadOnley(f);
    });
}
复制代码

结论

C# 中的细节还是有点多,使用C#进行文件操作是很常见的功能,当有大量的文件,目录需要移动,重命名,复制时,需要考虑一下效率的问题;FileSystem这个类提供的静态方法基本上涵盖了文件的增、删、改、移的操作,我们再也不需要去写一些繁杂的代码来进行文件操作了,直接用最简单的方法吧。

 

posted on   z5337  阅读(149)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示