拷贝文件夹里面的所有内容(包含子文件夹、子文件)

最近在开发的时候,接到一个任务:将自动化打包编译之后的项目资源做一个备份,因编译之后的资源包含.mainfest文件和.meat,实际出包使用的资源是不需要这些文件的。所以备份的时候需要筛选掉后缀为.mainfest和.meat 的文件。

说到底就是一个文件的复制、粘贴、筛选的操作。逻辑实现:

       public void CopyNewAssetBundleFolder() {

            //m_buildProjectPath 当前项目的路径

            //   sourceFilePath编译之后的资源目录路径

            string sourceFilePath = Path.Combine(m_buildProjectPath, “NewAssetBundle”);

            //      saveFilePath 保存的文件夹路径

            string saveFilePath = Path.Combine(m_buildProjectPath, “FinalAssetBundle”);

            if (Directory.Exists(sourceFilePath)) {

                if (Directory.Exists(saveFilePath))  {

                    Console.WriteLine(“删除已拷贝的FinalAssetBundle资源目录”);

                   // DelectDir(saveFilePath);     //递归 删除指定的目录并(如果指示)删除该目录中的所有子目录和文件。

                    Directory.Delete(saveFilePath, true);   // 删除指定的目录并(如果指示)删除该目录中的所有子目录和文件。

                }

                Console.WriteLine(“重新创建FinalAssetBundle资源目录”);

                CopyDirectory(sourceFilePath, Path.Combine(m_buildProjectPath, “FinalAssetBundle”));

            }

            else {

                Console.WriteLine(“NewAssetBundle 资源目录不存在”);

            }

        }

         /// <summary>
        /// 拷贝资源目录
        /// </summary>
        public void CopyDirectory(string sourceDirPath, string saveDirPath)  {
            if (!Directory.Exists(saveDirPath)){
                Directory.CreateDirectory(saveDirPath);
            }
            //获取源文件目录下的所有文件和子目录
            DirectoryInfo dir = new DirectoryInfo(sourceDirPath);
            FileSystemInfo[] fileinfo = dir.GetFileSystemInfos();
            foreach (FileSystemInfo i in fileinfo)  {
                if (i is DirectoryInfo)    {  //判断是否是文件夹
                CreateFileFolder(Path.Combine(sourceDirPath, i.Name), Path.Combine(saveDirPath, i.Name));
                }
                else {
                    string tmpFullName = i.FullName.ToLower();
                    if (i is FileInfo) {

    if (tmpFullName.EndsWith(“.DS_Store”,StringComparison.OrdinalIgnoreCase) 

|| tmpFullName.EndsWith(“.manifest”) || tmpFullName.EndsWith(“.meta”)) {

                        continue;

                        }

                        File.Copy(i.FullName, Path.Combine(saveDirPath, i.Name), true);

                    }

                }

            }

        }

        private static void CopyFile(string sourceDirPath, string saveDirPath){

            if (!Directory.Exists(saveDirPath)) {

                Directory.CreateDirectory(saveDirPath);

            }

            DirectoryInfo dir = new DirectoryInfo(sourceDirPath);

            FileSystemInfo[] fileinfo = dir.GetFileSystemInfos();

            foreach (FileSystemInfo i in fileinfo)    {

                string tmpFullName = i.FullName.ToLower();

                if (i is FileInfo)   {

       if (tmpFullName.EndsWith(“.DS_Store”, StringComparison.OrdinalIgnoreCase) 

|| tmpFullName.EndsWith(“.manifest”) || tmpFullName.EndsWith(“.meta”)) {

                        continue;

                    }

                    File.Copy(i.FullName, Path.Combine(saveDirPath, i.Name), true);

                }

                if (i is DirectoryInfo) {

              CreateFileFolder(Path.Combine(sourceDirPath, i.Name), Path.Combine(saveDirPath, i.Name));

                }

            }

        }

   public void DelectDir(string srcPath) {
            try {
                DirectoryInfo dir = new DirectoryInfo(srcPath);
                FileSystemInfo[] fileinfo = dir.GetFileSystemInfos();
                foreach (FileSystemInfo i in fileinfo) {
                    if (i is DirectoryInfo) {
                        DirectoryInfo subdir = new DirectoryInfo(i.FullName);
                        subdir.Delete(true);
                    }
                    else {
                        File.Delete(i.FullName);
                    }
                }
            }
            catch { }
        }

    原文作者:AnotherQuiet
    原文地址: https://blog.csdn.net/AnotherQuiet/article/details/80060357
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞