【C#】【System.IO】关于拷贝文件夹以及(Directory和DirectoryInfo、File和FileInfo)的区别
本次问题是想要拷贝文件夹,但是找了一圈发现只有File有Copy或者FileInfo的CopyTo,并没有Directory的拷贝操作方法。
针对C#中拷贝文件夹的方法就是先生成一个目标文件夹(destinationFolder)再将(soursefolder)中的文件依次拷贝到目标文件夹中,C#并没有提供封装好的方法将文件夹中的文件及其子文件夹整个的拷贝过去。
下述是CopyFold代码:
1 using System.IO;
2
3 class Program
4 {
5 static void Main()
6 {
7 string sourceFolder = @"";
8 string destinationFolder = @"";
9
10 CopyFolder(sourceFolder, destinationFolder);
11 }
12
13 static void CopyFolder(string sourceFolder, string destinationFolder)
14 {
15 DirectoryInfo dir = new DirectoryInfo(sourceFolder);
16
17 Directory.CreateDirectory(destinationFolder);
18
19 FileInfo[] files = dir.GetFiles();
20
21 foreach (FileInfo file in files)
22 {
23 string destinationFile = Path.Combine(destinationFolder, file.Name);
24 file.CopyTo(destinationFile, false);
25 }
26
27 DirectoryInfo[] subDirs = dir.GetDirectories();
28
29 foreach (DirectoryInfo subdir in subDirs)
30 {
31 string destinationSubDir = Path.Combine(destinationFolder, subdir.Name);
32 CopyFolder(subdir.FullName, destinationSubDir);
33 }
34 }
35 }
但是上述代码有一个问题,如果有多个sourcefolder和多个JPG或者TXT文件在一个父级文件夹下,将sourcefolder的路径换成父级路径后,多出的JPG和TXT也会同时被拷贝,所以需要对上述代码做出一些更改来达到只拷贝指定的文件夹。
拓展:
标题中的Directory和DirectoryInfo、File和FileInfo是没有什么区别的,带有Info字样的提供了更加灵活的实例方法,请注意,!!实例 方法!!!,在为查找资料之前我是将DirectoryInfo类直接和Directory类相同的方法带调用用法,这是错误的。
Directory和File是静态方法,所以可以直接File.Copy()、Directory.GetDirectories()
而DirectoryInfo和FileInfo是非静态的,必须实例化后才能调用其中的方法,如DirectoryInfo.GetDirectories()是错误的!new DirectoryInfo().GetDirectories()才可以。
【C#】【System.IO】关于拷贝文件夹以及(Directory和DirectoryInfo、File和FileInfo)的区别的更多相关文章
- 【JAVA】编程(6)--- 应用IO流拷贝文件夹(内含多个文件)到指定位置
此程序应用了: File 类,及其常用方法: FileInputStream,FileOutputStream类及其常用方法: 递归思维: package com.bjpowernode.javase ...
- C# 拷贝文件夹到指定文件夹并更改文件夹名称
using System; using System.Collections.Generic; using System.Text; namespace ClientPrintServer.Tools ...
- java io流 对文件夹的操作
java io流 对文件夹的操作 检查文件夹是否存在 显示文件夹下面的文件 ....更多方法参考 http://www.cnblogs.com/phpyangbo/p/5965781.html ,与文 ...
- Java Io 之拷贝文件性能比较
前面我们共讨论了拷贝文件有三种方式: 1. 第一种,一个字节一个字节的进行拷贝文件操作. 2. 第二种,使用字节数据批量的进行拷贝文件操作. 3. 第三种,使用带缓冲输入输出流来拷贝文件. 那么哪一种 ...
- ubuntu mount u盘以及cp拷贝文件夹
如果是ubuntu桌面环境的话,不用mount,接入的U盘就可以直接被系统识别,访问起来非常方便,但如果没有桌面环境呢,比如在ubuntu server端,如何访问U盘呢? 第一步:查看U盘信息sud ...
- 用PRODUCT_COPY_FILES拷贝文件夹
拷贝文件PRODUCT_COPY_FILES += device/qcom/msm8909/media/media_profiles_8909.xml:system/etc/media_profile ...
- 【等待事件】等待事件系列(3+4)--System IO(控制文件)+日志类等待
[等待事件]等待事件系列(3+4)--System IO(控制文件)+日志类等待 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可 ...
- centos下cp -r 命令可拷贝文件夹
LINUX命令的cp -r 和-R的区别 功能上是等价的.不加-r或者-R的时候,只拷贝文件,不拷贝文件夹:加上后则会拷贝文件夹——包括下一级的子文件夹,以及子文件夹中的子文件夹,余此类推.rm的-R ...
- AWS S3 递归上传文件和递归下载文件, 以及S3之间拷贝文件夹
1. 递归上传文件: aws s3 cp 本地文件夹 s3://bucket-name -- recursive --region us-east-1 2. 递归下载S3上的文件夹: cd 本地下载 ...
- Swift 拷贝文件夹,实现文件夹内容整体复制
我们知道,在沙盒内,iOS要拷贝一个文件,可以使用 fileManager.copyItem(atPath: fullPath, toPath: fulltoPath) 方法简单实现,不过当我们要拷贝 ...
随机推荐
- 数据库重构之路,以 OrientDB 到 NebulaGraph 为例
"本文由社区用户 @阿七从第一视角讲述其团队重构图数据库的过程,首发于阿七公众号「浅谈架构」" 原文出处:https://mp.weixin.qq.com/s/WIJNq-nuuA ...
- Azure Data Factory(八)数据集验证之服务主体(Service Principal)
一,引言 如下图所示,今天我们接着上一篇内容,继续讲解 Azure Data Factory 中的数据集连接服务的认证方式:Service Principal 关于 Service Principal ...
- warning in ./src/router/index.js (Emitted value instead of an instance of Error) Error compiling template: Uncaught (in promise) TypeError: Cannot set properties of undefined (setting 'jsoninfo'
目录 warning in ./src/router/index.js (Emitted value instead of an instance of Error) Error compiling ...
- Oracle-复制表结构存在的问题
在生产中,创建一个新表tbl_A,要求与已有表结构tbl_B一致 create table tbl_A AS select * from tbl_B where 1=2; --拷贝表结构tbl_B给t ...
- 使用ensp搭建路由拓扑,并使用isis协议实现网络互通实操
转载请注明出处: 1.通过拓扑搭建如下拓扑: 其中R7.R8为L1,R6为L1/2,R9为L2. 2.配置isis实现网络互通 R7配置如下: [Huawei]isis 1 [Huawei-isis- ...
- MySQL系列之备份恢复——运维在备份恢复方面、备份类型、备份方式及工具、逻辑备份和物理备份、备份策略、备份工具使用-mysqldump、企业故障恢复案例、备份时优化参数、MySQL物理备份工具
文章目录 1. 运维在数据库备份恢复方面的职责 1.1 设计备份策略 1.2 日常备份检查 1.3 定期恢复演练(测试库) 1.4 故障恢复 1.5 迁移 2. 备份类型 2.1 热备 2.2 温备 ...
- 本地化部署自建类ChatGPT服务远程访问
Text generation web UI可为类ChatGPT的大型语言模型提供能够快速上手的网页界面,不仅可以提高使用效率,还可满足私有化部署,或对模型进行自定义.目前,该Web UI已经支持了许 ...
- DFS(深度优先搜索)洛谷P1162
看大佬们dfs一遍就出结果,蒟蒻的我dfs了三遍,当然这题也可以用bfs做,但是dfs不用队列代码短一些. #include <iostream> #include <vector& ...
- 字符串表达式计算(a+b/(a-b))的思路与实践
前言 为满足业务需要,需要为项目中自定义模板添加一个计算字段的组件,通过设置字符串表达式,使用时在改变表达式其中一个字段的数据时,自动计算另外一个字段的值. 本篇为上篇,介绍原理,简单实现一个工具,输 ...
- springboot整合jpa sqlite
前言 最近有关项目需要用到SQLITE,我先是使用Mybatis去连接SQLITE,然后发现SQLITE对BLOB支持不好,在网上看到相关教程可以写mapper.xml文件,加一个handler解决B ...