首页 > 编程语言 >【转】[C#] 重命名文件夹

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

时间:2024-07-05 19:08:38浏览次数:16  
标签:重命名 文件 jhrs C# 文件夹 FileSystem com

转自: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这个类提供的静态方法基本上涵盖了文件的增、删、改、移的操作,我们再也不需要去写一些繁杂的代码来进行文件操作了,直接用最简单的方法吧。

 

标签:重命名,文件,jhrs,C#,文件夹,FileSystem,com
From: https://www.cnblogs.com/z5337/p/18286453

相关文章

  • World of Warcraft [CLASSIC] Talent Tree
    WorldofWarcraft[CLASSIC] TalentTree 天赋树模拟器01)初始化整个页面,选择游戏职业,初始化3个天赋树02)初始化天赋树结构,层次为N层03)每层有4个技能,设置可显示,设置隐藏04)每个技能可配置图表,技能名称,备注说明,每一级说明不同05)每层的技能可支持最大技能点......
  • StartActivity的流程
    1.当startActivity时首先回执行@OverridepublicvoidstartActivity(Intentintent,@NullableBundleoptions){getAutofillClientController().onStartActivity(intent,mIntent);if(options!=null){startActivityForResult......
  • StarRocks数据导入慢问题解决
    一、问题描述依据StarRocks官网快速开始安装教程,用dockercompose安装了starrocks,log模块从rabbitMq的队列批量获取log消息,发现队列消息有堆积,一晚上下来大概能对接4000条消息。经单元测试发现insertinto到starrocks中时间竟然相差几百倍。mysql每条insertsql执行3.5mss......
  • CAN转PN网关模块连接激光切割机的配置方法
    激光切割机在工业生产中被广泛应用,而激光发射器与控制设备常以不同的协议存在两者之间,CAN总线和Profinet以各自的特点被广泛用于设备当中。本文将介绍介绍兴达易控CAN转Profinet网关模块(XD-PN_CAN20)连接CAN激光切割机的使用方法。一、功能及优势CAN转Profinet网关模块(XD-PN_C......
  • Vue-cli
    环境准备nodejs安装验证nodejs环境变量配置npm的全局安装路径切换npm的淘宝镜像安装Vue-clinode-v//验证是否安装成功安装成功会显示版本回头再写...验证是否安装成功vue--version安装成功会显示版本  创建Vue项目vueui点击创建 可以看到进......
  • CobaltStrike的内网安全
    1.上线机器的Beacon的常用命令2.信息收集和网站克隆3.钓鱼邮件4.CS传递会话到MSF5.MSF会话传递到CS1上线机器的Beacon的常用命令介绍:CobaltStrike分为服务端和客户端,一般我们将服务端放在kali,客户端可以在物理机上面,或者虚拟机都可以启动服务端,首先创建一个监听(注意,这......
  • R语言、SAS潜类别(分类)轨迹模型LCTM分析体重指数 (BMI)数据可视化|附代码数据
    全文下载链接: http://tecdat.cn/?p=26105 最近我们被客户要求撰写关于LCTM的研究报告,包括一些图形和统计输出。在本文中,潜类别轨迹建模(LCTM)是流行病学中一种相对较新的方法,用于描述生命过程中的暴露,它将异质人群简化为同质模式或类别。然而,对于给定的数据集,可以根据类的数......
  • 数据分享|python分类预测职员离职:逻辑回归、梯度提升、随机森林、XGB、CatBoost、LGB
    全文链接:https://tecdat.cn/?p=34434原文出处:拓端数据部落公众号分析师:ShilinChen离职率是企业保留人才能力的体现。分析预测职员是否有离职趋向有利于企业的人才管理,提升组织职员的心理健康,从而更有利于企业未来的发展。解决方案任务/目标采用分类这一方法构建6种模型对职......
  • 我用到的一些C盘清理方法
    大三都过完了,我也要步入大四加入老人团队了,学业上除了专业英语也就毕设一个大头了,我的毕设打算做一个rougelite游戏,软件用unity,但是我在创建unity项目的时候突然说我内存不够了?!打开我的电脑一看,C盘《0字节可用》,好好好现在不是红条了,直接条都没了是吧,网上搜了一些方法我写在下面1......
  • 为何现在的大模型大部分是Decoder only结构
    现代大型语言模型,如GPT-3、GPT-J、和GPT-Neo等,主要采用Decoder-only结构,这是由于几个关键原因:并行计算:Decoder-only模型在训练时可以采用单向注意力机制,这意味着每个token只关注它之前的token。这种单向性使得模型可以在训练时更容易地并行处理数据,从而提高训练效率。......