首页 > 编程语言 >C#文件夹复制

C#文件夹复制

时间:2023-07-20 12:23:27浏览次数:30  
标签:file string C# 复制 System 文件夹 IO Directory Path

两种方式本质是一样的,代码也差不多。

1、文件夹拷贝代码一:

源文件夹名为AAA,目标文件夹为BBB。

拷贝完成后,文件夹名字更改为BBB。

比如AAA/1.jpng,会变成BBB.jpg。

//如果前面是\Android,后面是com.xx,则复制之后的Android名字更改为com.xx
        public static int CopyFolder(string sourceFolder, string destFolder)
        {
            try
            {
                //如果目标路径不存在,则创建目标路径
                if (!System.IO.Directory.Exists(destFolder))
                {
                    System.IO.Directory.CreateDirectory(destFolder);

                }
                //得到原文件根目录下的所有文件
                string[] files = System.IO.Directory.GetFiles(sourceFolder);
                foreach (string file in files)
                {
                    string name = System.IO.Path.GetFileName(file);
                    string dest = System.IO.Path.Combine(destFolder, name);

                    System.IO.File.Copy(file, dest, true);//复制文件


                }
                //得到原文件根目录下的所有文件夹
                string[] folders = System.IO.Directory.GetDirectories(sourceFolder);
                foreach (string folder in folders)
                {
                    string name = System.IO.Path.GetFileName(folder);
                    string dest = System.IO.Path.Combine(destFolder, name);
                    CopyFolder(folder, dest);//构建目标路径,递归复制文件
                }
                return 1;
            }
            catch (Exception e)
            {

                return 0;
            }

        }

 

2、文件夹拷贝代码2:

源文件夹为AAA,目标文件夹为BBB。

将AAA目录下的内容,都拷贝至BBB目录下。

//假如前面为\bin,后面为asset,则是将bin(包含bin)全部复制到asset下。
        public static int CopyFolder2(string sourceFolder, string destFolder)
        {
            try
            {
                string folderName = System.IO.Path.GetFileName(sourceFolder);
                string destfolderdir = System.IO.Path.Combine(destFolder, folderName);
                string[] filenames = System.IO.Directory.GetFileSystemEntries(sourceFolder);
                foreach (string file in filenames)// 遍历所有的文件和目录
                {
                    if (System.IO.Directory.Exists(file))
                    {
                        string currentdir = System.IO.Path.Combine(destfolderdir, System.IO.Path.GetFileName(file));
                        if (!System.IO.Directory.Exists(currentdir))
                        {
                            System.IO.Directory.CreateDirectory(currentdir);
                        }
                        CopyFolder2(file, destfolderdir);
                    }
                    else
                    {
                        string srcfileName = System.IO.Path.Combine(destfolderdir, System.IO.Path.GetFileName(file));
                        if (!System.IO.Directory.Exists(destfolderdir))
                        {
                            System.IO.Directory.CreateDirectory(destfolderdir);
                        }
                        System.IO.File.Copy(file, srcfileName, true);
                    }
                }

                return 1;
            }
            catch (Exception e)
            {


                return 0;
            }

        }

 

标签:file,string,C#,复制,System,文件夹,IO,Directory,Path
From: https://www.cnblogs.com/vsirWaiter/p/17567979.html

相关文章

  • 2023 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(省赛)记录
    RC-u1亚运奖牌榜思路略代码点击查看代码#include<bits/stdc++.h>#definerep(i,x,y)for(inti=x;i<=y;++i)usingnamespacestd;#defineintlonglonginta[30][30];signedmain(){ intn; cin>>n; while(n--){ intx,c; cin>>x>>c; a[x]......
  • Codeforces 1446F - Line Distance
    感觉这种类似于让你找第\(k\)大距离的计算几何题其实都挺套路的。二分一个答案\(t\),然后思考一下什么样的点对满足原点到它们的连线的距离\(\let\)。以原点为圆心\(t\)为半径画个圆,然后分情况讨论:如果\((x_i,y_i)\)或\((x_j,y_j)\)在圆内,那么必然符合条件。如果\(......
  • go通过docker sdk将容器中的文件或者文件夹复制到本地
    第一步:需要创建docker客户端第二步:将文件复制出来,但是复制出来的文件无论文件还是文件夹都会是tar存档的形式第三步:解包packagemainimport( "archive/tar" "context" "fmt" "io" "os" "path/filepath" "github.com/docker/docker/client&quo......
  • Test Parameter-Scalar Parameter创建
    TestParameter-ScalarParameter创建_哔哩哔哩_bilibili1.背景:例:编写一个传感器输入值的测试,测试环境包括Tester(测试方),ECU(被测对象),Tester发送传感器变量SensorA和SensorB,ECU反馈Force值的过程,根据不同传感器输入值测试Force反馈值,即便有自定义的TestCase模板,每次还是需要输入......
  • 如何把建的首选项放到AWC中ctx.preferences来获取
    1、获取首选项的方法:ctx.preferences.ABC2、有个问题,你会发现,你新建的首选项ABC,在 ctx.preferences不存在。A、要做多一步操作。把你新建的首选项名称,放到这个首选项AWC_StartupPreferences里面B、做完之后,要在AWC端退出账号,重新登录,才会生效 ......
  • Codeforces 1621H - Trains and Airplanes
    这能3500?对于一组在\(u\)上的询问,考虑每种线路\(x\),假设\(1\tou\)路径上线路\(x\)的长度为\(len\),那么不难发现收罚款的次数只有两种可能:\(\lfloor\dfrac{len}{T}\rfloor\)或者\(\lfloor\dfrac{len}{T}\rfloor+1\),且对于一个\(v\)满足\(z_u=z_v\)且\(v\)在\(u......
  • 2023年9月天津/郑州/深圳DAMA-CDGA/CDGP认证考试报名
    据DAMA中国官方网站消息,2023年度第三期DAMA中国CDGA和CDGP认证考试定于2023年9月23日举行。 报名通道现已开启,相关事宜通知如下: 考试科目: 数据治理工程师(CertifiedDataGovernanceAssociate,CDGA)数据治理专家(CertifiedDataGovernanceProfessional,CDGP) 考试时间: CDGA:2023......
  • JavaScript学习 -- Promise的使用
    在JavaScript中,Promise是一种用于处理异步操作的对象。它表示某个异步操作的最终完成或失败,并提供了一种优雅的方式来处理异步操作的结果。本文将介绍JavaScript如何使用Promise,并提供一个实际的例子。什么是PromisePromise是一种异步操作的解决方案,它有三种状态:pending(等待)、re......
  • Unity UGUI的AspectRatioFitter(宽高比适应器)组件的介绍及使用
    UnityUGUI的AspectRatioFitter(宽高比适应器)组件的介绍及使用1.什么是AspectRatioFitter组件?AspectRatioFitter(宽高比适应器)是UnityUGUI中的一个组件,用于控制UI元素的宽高比例,使其能够根据父容器的大小进行自适应调整。2.为什么要使用AspectRatioFitter组件?AspectRatioFitte......
  • 华为认证 | 拿下HCIE,需要多久?
    有很多人想学习HCIE,但又不知道什么时候能学会,在这小编为大家详细介绍一下HCIE多久学会?其实有很多因素影响学习的时间,比如有个人基础、学习时间、学习能力等等原因。跟我们学其他的知识是一样的。有的人考HCIE,几个月考到,有的人需要半年或1年以上的时间考到,甚至好几年没过的也有。每......