如下为测试代码,测试通过
[C#] 纯文本查看 复制代码 string url = @"D:\\PDF_Upload";
string FilePath = @"E:\\";
fileManager.CopyPasteDirectory(url, FilePath); [C#] 纯文本查看 复制代码
方法详细
/// <summary>
/// 【对根目录是文件夹的文件】进行复制和粘贴
/// 采用的复制和粘贴的方式是覆盖性的
/// </summary>
/// <param name="CopyPath">文件的复制源路径</param>
/// <param name="PastePath">粘贴到的目标路径</param>
public void CopyPasteDirectory(string CopyPath,string PastePath)
{
//获取到需要粘贴的文件的文件名,
//eg: D:\\Test
//取得根文件名,这个文件名称从绝对路径里面进行提取
//eg: Test
string CopyFolderName = CopyPath.Substring(CopyPath.LastIndexOf("\\") + 1);
//定义需要粘贴到的文件的路径
//eg: E:\\Test
string PasteFolderName = PastePath + "\\" + CopyFolderName;
//判断粘贴的目标路径末尾是否带有 "\\"
if (PastePath.LastIndexOf("\\") == PastePath.Length - 1)
{
//此时字符串末尾存在 “\\”,直接给新文件命名
PasteFolderName = PastePath + CopyFolderName;
}
try
{
//首先创建根目录文件夹
Directory.CreateDirectory(PasteFolderName);
//将根目录文件夹下的文件进行遍历得到文件
string[] CopyFolderNames = Directory.GetFileSystemEntries(CopyPath);
//遍历文件和目录
foreach (string CopyFile in CopyFolderNames)
{
//如果该文件是文件夹
//执行递归操作
if (File.GetAttributes(CopyFile) == FileAttributes.Directory)
{
//获取文件夹的完整名称
string FileName = PasteFolderName + "\\" + CopyFile.Substring(CopyFile.LastIndexOf("\\") + 1);
//不存在该文件,进入递归
if (!Directory.Exists(FileName))
{
//覆盖替换,递归操作
CopyPasteDirectory(CopyFile, PasteFolderName);
}
}
//如果是文件类型,直接进行复制和粘贴
else
{
//直接复制文件
string FileName = PasteFolderName + "\\" + CopyFile.Substring(CopyFile.LastIndexOf("\\") + 1);
//复制文件
File.Copy(CopyFile, FileName, true);
}
}
}
catch (Exception e)
{
throw e;
}
}
|