c# 复制文件夹

本文提供了两种在C#中实现目录及文件复制的方法。第一种方法使用递归遍历源目录,复制所有文件和子目录到目标目录。第二种方法通过获取源路径的文件名并检查目标目录是否存在,然后创建并复制所有文件和子目录。文章详细展示了如何用C#代码实现目录的完全复制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
            }

        }

 

转载于:https://www.cnblogs.com/ddwk/p/11113944.html

你可以使用C#中的System.IO类来复制文件夹到服务器。以下是示例代码: ```csharp using System.IO; string sourceDir = @"C:\SourceFolder"; string destinationDir = @"\\ServerName\DestinationFolder"; // Create the destination directory if it does not exist if (!Directory.Exists(destinationDir)) { Directory.CreateDirectory(destinationDir); } // Get the files from the source directory and copy them to the destination directory foreach (string file in Directory.GetFiles(sourceDir)) { string destFile = Path.Combine(destinationDir, Path.GetFileName(file)); File.Copy(file, destFile, true); } // Get the subdirectories from the source directory and copy them to the destination directory foreach (string subDir in Directory.GetDirectories(sourceDir)) { string destSubDir = Path.Combine(destinationDir, Path.GetFileName(subDir)); Directory.CreateDirectory(destSubDir); CopyDirectory(subDir, destSubDir); } ``` 在示例代码中,`sourceDir`变量表示源文件夹的路径,`destinationDir`变量表示目标服务器上的文件夹路径。首先,我们检查目标文件夹是否存在,如果不存在,则创建一个。然后,我们使用`Directory.GetFiles`方法获取源文件夹中的所有文件,并使用`File.Copy`方法将它们复制到目标文件夹。接下来,我们使用`Directory.GetDirectories`方法获取源文件夹中的所有子文件夹,并使用`Directory.CreateDirectory`方法创建它们在目标文件夹中的对应项。最后,我们递归地调用`CopyDirectory`方法以处理每个子文件夹中的文件和子文件夹。 注意,这个示例代码中没有包括错误处理和异常处理,你可能需要根据你的具体情况添加它们。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值