美文网首页C语言游戏开发
C# 文件夹递归拷贝操作

C# 文件夹递归拷贝操作

作者: 炉石不传说 | 来源:发表于2019-07-24 13:27 被阅读0次

        在Unity游戏开发中,有时候做编辑器开发,或者做一些小工具的时候经常用到文件操作。文件夹内容的复制是最常用的,这里做个Mark,方便以后翻阅,同时也能分享给那些需要同样接口的筒靴们(别问我为什么不用Unity自带的文件操作(UnityEditor.FileUtil))

上菜(code):

using System.Collections;

using System.Collections.Generic;

using System.IO;

using UnityEngine;

public class Scripts : MonoBehaviour

{

    string srcPath;

    string dstPath;

    // Use this for initialization

    void Start()

    {

        srcPath = Application.dataPath + "/../TestSrc";

        dstPath = Application.dataPath + "/../TestDst";

        CopyFolder(srcPath, dstPath, false);

    }

    void CopyFolder(string srcPath_, string dstPath_, bool createSrcFolder_ = true)

    {

        string symbol1 = "/";

        string symbol2 = "\\";

        if(createSrcFolder_)

        {

            string strFolderName = srcPath_.Substring(srcPath_.LastIndexOf(symbol1) + 1, srcPath_.Length - srcPath_.LastIndexOf(symbol1) - 1);

            dstPath_ = dstPath_ + symbol1 + strFolderName;

            if (!Directory.Exists(dstPath_) && createSrcFolder_)

            {

                Directory.CreateDirectory(dstPath_);

            }

        }

        string[] strFiles = Directory.GetFiles(srcPath_);

        foreach (string filePath in strFiles)

        {

            string strFileName = filePath.Substring(filePath.LastIndexOf(symbol2) + 1, filePath.Length - filePath.LastIndexOf(symbol2) - 1);

            string dstAddress = dstPath_ + symbol1 + strFileName;

            File.Copy(filePath, dstAddress, true);

        }

        DirectoryInfo dirInfo = new DirectoryInfo(srcPath_);

        DirectoryInfo[] dirPaths = dirInfo.GetDirectories();

        foreach (var dirPath in dirPaths)

        {

            CopyFolder(srcPath_ + symbol1 + dirPath.Name, dstPath_);

        }

    }

}

代码简单介绍:

1、CopyFolder函数实现了,递归拷贝源文件夹下面的所有文件到目标文件。

2、如果目标文件已存在同名文件,会进行覆盖处理,如果有不想覆盖情况,请自行处理。

3、createSrcFolder_字段来判断是否要创建源文件夹,然后在拷贝。有些时候,我只想拷贝源文件夹下面的所有文件,但是不包括这个源文件夹自身,就可以把这个字段设置为false,否则会把源文件夹一起拷贝到目标文件下面,作为其子文件夹。

相关文章

  • C# 文件夹递归拷贝操作

    在Unity游戏开发中,有时候做编辑器开发,或者做一些小工具的时候经常用到文件操作。文件夹内容的复制是最常用的,这...

  • CookBook

    从salt master拷贝文件夹到salt minion 使用file.recurse函数,会递归拷贝sourc...

  • JS文集的目录

    js基础心法 深浅拷贝(递归)深浅拷贝(首层浅拷贝) js 数据处理 数组对象查找的常见操作数组对象去重的常见操作...

  • C# 文件相关操作

    一、文件夹 1.选择文件夹 2.文件夹相关操作 C#文件夹相关操作主要使用Directory类和Directory...

  • 复制拷贝

    cp 源文件 目标文件.bak 备份文件 -r 可以拷贝文件夹 也是递归 可以把文件夹里边的东西一起复...

  • 对象深拷贝和浅拷贝

    浅拷贝 深拷贝 深拷贝的递归方法 深拷贝的JSON方法

  • Javascript中的深拷贝

    JS 中深拷贝的几种实现方法 1、使用递归的方式实现深拷贝 //使用递归的方式实现数组、对象的深拷贝 functi...

  • Node常用模块之wrench

    wrench -- 递归文件、文件夹操作一体化解决方案 1.安装 2.使用 3.同步操作 4.异步操作

  • 递归实现对象深拷贝

    ex:递归实现对象深拷贝

  • 深度拷贝(递归拷贝)

    深度拷贝 拷贝出来的和被拷贝的没有关系,即被拷贝的属性改变,拷贝出来的属性不会跟着改变。

网友评论

    本文标题:C# 文件夹递归拷贝操作

    本文链接:https://www.haomeiwen.com/subject/pikxrctx.html