首页 > 编程语言 >【转】[C#] 1行代码实现C#复制文件夹功能

【转】[C#] 1行代码实现C#复制文件夹功能

时间:2024-07-05 19:09:20浏览次数:21  
标签:sourceDir C# destDir 文件夹 复制 string

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

做为一个C#开发人员,如遇到上传文件等功能时,时常会有C#复制文件夹的功能,通常都会用到System.IO命名空间的类库来进行文件操作,前不久在编写一个批量克隆git存储库的功能时,也遇到了类似的功能,来说说我是用了什么样的只有【1】行代码即实现了复制文件夹功能。

在开始正题之前,我们来回顾一下一些常见的写法,顺便提一下,利用本文提供的方法,你也可以实现C# 复制文件夹、C#重命名文件夹、C#重命名文件、C#移动文件、C#移动目录的功能,统统只要一行代码。

C#复制文件夹所有内容(常规写法)

下面是我们常见的通过循环复制文件夹里面的内容到新目录的代码,或许很多人都会这样写。

        /// <summary>
        /// 复制一个目录(文件夹,https://jhrs.com 首发)到新目录,如果目标目录不存在则新建
        /// </summary>
        /// <param name="sourceDir">源目录</param>
        /// <param name="destDir">目标目录</param>
        private static void CopyFolder(string sourceDir, string destDir)
        {
            if (!Directory.Exists(destDir))
            {
                Directory.CreateDirectory(destDir);
            }
            try
            {
                string[] fileList = Directory.GetFiles(sourceDir, "*");
                foreach (string f in fileList)
                {
                    string fName = f.Substring(sourceDir.Length + 1);
                    File.Copy(Path.Combine(sourceDir, fName), Path.Combine(destDir, fName), true);
                }
            }
            catch (DirectoryNotFoundException dirNotFound)
            {
                throw new DirectoryNotFoundException(dirNotFound.Message);
            }
        }

那我们来看看只有1行C#代码就可实现复制文件夹的功能。在开始之前,请先添加引用:Microsoft.VisualBasic.FileIO,添加后,只需要这样写就可以了。需要说明的是,别以为看到是VB命名空间的,就不能调用,实际上放心的调用即可。

using Microsoft.VisualBasic.FileIO;

//真实项目中,我也是调用的这个方法,只需要一行代码就可以实现复制目录功能。
//效率是非常高的,尤其是复制GB级别大小的文件(jhrs.com)。
FileSystem.CopyDirectory(sourceDir, destDir);

怎么样,是不是很简单呢?

标签:sourceDir,C#,destDir,文件夹,复制,string
From: https://www.cnblogs.com/z5337/p/18286447

相关文章

  • 【转】[C#] 重命名文件夹
    转自:https://jhrs.com/2022/45307.htmlC#重命名文件夹通过C#代码对文件夹进行重命名也是常见功能或需求,而在网上搜索到的常见代码都是通过先创建新目录,然后移动原来的文件到新目录的方式,大概所能见到的代码如下所示://步骤1,先创建新目录,当前步骤非必须Directory.CreateDirecto......
  • 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......