c# 復制文件夾


public static void CopyDirectory(string sourceDirPath,string SaveDirPath)
        {
            try
            {
                //如果指定的存儲路徑不存在,則創建該存儲路徑
                if (!Directory.Exists(SaveDirPath))
                {
                    //創建
                    Directory.CreateDirectory(SaveDirPath);
                }
                //獲取源路徑文件的名稱
                string[] files = Directory.GetFiles(sourceDirPath);
                //遍歷子文件夾的所有文件
                foreach(string file in files)
                {
                    string pFilePath = SaveDirPath + "\\" + Path.GetFileName(file);
                    if (File.Exists(pFilePath))
                        continue;
                    File.Copy(file, pFilePath, true);
                }
                string[] dirs = Directory.GetDirectories(sourceDirPath);
                //遞歸,遍歷文件夾
                foreach (string dir in dirs)
                {
                    CopyDirectory(dir, SaveDirPath + "\\" + Path.GetFileName(dir));
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

第二種

static void CopyFolder(string srcPath, string desPath)
        {

            string strFolderName = srcPath.Substring(srcPath.LastIndexOf("\\") + 1, srcPath.Length - srcPath.LastIndexOf("\\") - 1);
            //獲得文件名夾名
            if (!Directory.Exists(desPath + "\\" + strFolderName))
                Directory.CreateDirectory(desPath + "\\" + strFolderName);//目標文件夾沒此文件夾,則創建
            string[] strFiles = Directory.GetFiles(srcPath, "", SearchOption.AllDirectories);//獲得文件夾所有文件
            foreach (string strFilesElement in strFiles)
            {
                var strFileName = strFilesElement.Substring(strFilesElement.LastIndexOf("\\") + 1, strFilesElement.Length - strFilesElement.LastIndexOf("\\") - 1);
                //獲得文件名
                string tarAddress = desPath + "\\" + strFileName;//目標路徑
                File.Copy(strFilesElement, tarAddress, true);//復制
            }
            DirectoryInfo dirInfo = new DirectoryInfo(srcPath);//獲得其他文件,對每個文件夾做遞歸操作
            DirectoryInfo[] dirPath = dirInfo.GetDirectories();
            foreach (var dirPathElement in dirPath)
            {
                CopyFolder(srcPath + "\\" + dirPathElement.Name, desPath + "\\" + dirPathElement.Name);
            }

        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM