【C#】【System.IO】关于拷贝文件夹以及(Directory和DirectoryInfo、File和FileInfo)的区别

这篇具有很好参考价值的文章主要介绍了【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()才可以。文章来源地址https://www.toymoban.com/news/detail-710709.html

到了这里,关于【C#】【System.IO】关于拷贝文件夹以及(Directory和DirectoryInfo、File和FileInfo)的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Dockerfile 指令 COPY 拷贝文件夹

    网上查了查资料,这里记录一下。         今天在编写 dockerfile 时使用 COPY 拷贝文件夹时遇到了意料之外的情况。在此记录一下正确的使用方法。         今天在通过 dockerfile 将文件夹拷贝到镜像的时候发现,是把文件夹下的内容拷贝进去了。 dockerfile 如下:     

    2024年01月18日
    浏览(39)
  • 【经典小练习】JavaSE—拷贝文件夹

    🎊专栏【Java小练习】 🍔喜欢的诗句:天行健,君子以自强不息。 🎆音乐分享【如愿】 🎄欢迎并且感谢大家指出小吉的问题🥰 在学io流的时候,我发现听的课程中讲的这个小练习很有帮助,就记录了下来,防止忘记哈哈哈 在Java IO操作中,文件和目录的拷贝功能是非常常用

    2024年02月09日
    浏览(30)
  • Linux拷贝服务器文件夹到本地

    方法1: scp命令 scp命令是用于通过 SSH 协议安全地将文件复制到远程系统和从远程系统复制文件到本地的命令。它是  Secure Copy  的缩写,表示安全拷贝。 scp  可以使我们通过网络,把文件从一台电脑拷贝到另一台电脑。 Linux SCP 命令是一种在两个远程节点之间传输文件的便捷

    2024年01月19日
    浏览(37)
  • 【正点原子STM32】SYSTEM文件夹介绍(sys文件夹、deley文件夹、USART 文件夹、SysTick、printf函数、fputc函数、半主机模式)

    一、sys文件夹介绍 二、deley文件夹介绍 2.1、deley文件夹函数简介 2.2、SysTick工作原理 2.3、SysTick寄存器介绍 2.4、delay_init()函数 2.5、delay_us()函数 2.6、delay_ms()函数 三、USART 文件夹介绍 3.1、printf函数输出流程 3.2、printf的使用 3.3、printf函数支持 半主机模式简介 方法一:微库法

    2024年03月11日
    浏览(52)
  • STM32-05-STM32_SYSTEM文件夹

    delay文件夹中的文件 delay.c 和 delay.h 用来实现系统的延时功能,其包括7个函数: delay编程思想:CM3内核处理器,内部包含一个SysTick定时器,SysTick是一个24位的向下递减的计数定时器,当计数值减到0时,将从 RELOAD 寄存器中自动重装载定时初值,开始新一轮计数。只要不把它在

    2024年01月20日
    浏览(29)
  • 安卓ROM定制 修改必备常识-----初步了解system系统分区文件夹的基本含义 【二】

    安卓修改rom 固件 修改GSI 移植rom 必备常识 lib--**so文件基本解析 一起来了解system目录相应文件的用途吧。(rom版本不同里面的app也会不一样) 给大家说下最简单的方法提取img里面的文件,对于后缀img格式的文件可以使用7zip.选择***.img使用7zip打开压缩包方式,可以用于简单提

    2024年02月07日
    浏览(29)
  • c# 文件夹选择 , 文件选择

    c# 文件夹选择 , 文件选择 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; namespace Test07 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, Eve

    2024年02月13日
    浏览(29)
  • C#选定文件复制到指定文件夹

    搜索到的: string pLocalFilePath =\\\"\\\";//要复制的文件路径 string pSaveFilePath =\\\"\\\";//指定存储的路径 if (File.Exists(pLocalFilePath))//必须判断要复制的文件是否存在 { File.Copy(pLocalFilePath, pSaveFilePath, true);//三个参数分别是源文件路径,存储路径,若存储路径有相同文件是否替换 } 自己应用:

    2023年04月21日
    浏览(41)
  • C#怎么删除指定文件或文件夹

    本文主要介绍了C#如何删除指定文件或文件夹,具有很好的参考价值,希望对大家有所帮助。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 public static string deleteOneFile( string fileFullPath)          {              // 1、首先判断文件或者文件路径是否存在              i

    2024年02月13日
    浏览(36)
  • 关于 VSCode 文件夹折叠问题

    1、在 VSCode 中,父文件夹下面如果只有一个子文件夹,就会出现下图所示的折叠情况: 2、这种情况十分影响我们选中文件夹时的体验感,打开 设置 : 3、在设置界面搜索: Explorer:Compact Folders 4、取消该项的勾选,即可解决单个文件夹折叠的问题。 5、到此问题就解决了,希

    2024年02月15日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包