https://mp.weixin.qq.com/s/KL_vyRoCf-m4tEmdGZVjhg
概述:在C#中,实现复制目录的基础功能涉及使用Directory和File类,而高级功能使用了更灵活的DirectoryInfo和FileInfo类,提高性能和扩展性。
基础功能实现:
以下是基础功能实现,用于在C#中复制目录的全部内容到另一个目录。
using System;
using System.IO;
class Program
{
static void Main()
{
string sourceDirectory = @"C:\SourceDirectory";
string destinationDirectory = @"C:\DestinationDirectory";
CopyDirectory(sourceDirectory, destinationDirectory);
Console.WriteLine("基础功能:目录复制完成。");
}
static void CopyDirectory(string sourceDir, string destDir)
{
// 检查源目录是否存在
if (!Directory.Exists(sourceDir))
{
Console.WriteLine("源目录不存在。");
return;
}
// 如果目标目录不存在,则创建
if (!Directory.Exists(destDir))
{
Directory.CreateDirectory(destDir);
}
// 获取源目录中的所有文件和子目录
string[] files = Directory.GetFiles(sourceDir);
string[] subdirectories = Directory.GetDirectories(sourceDir);
// 复制文件
foreach (string file in files)
{
string destFile = Path.Combine(destDir, Path.GetFileName(file));
File.Copy(file, destFile);
}
// 递归复制子目录
foreach (string subdirectory in subdirectories)
{
string destSubdirectory = Path.Combine(destDir, Path.GetFileName(subdirectory));
CopyDirectory(subdirectory, destSubdirectory);
}
}
}
高级功能实现:
以下是高级功能实现,使用DirectoryInfo和FileInfo类提高性能和灵活性。
using System;
using System.IO;
class Program
{
static void Main()
{
string sourceDirectory = @"C:\SourceDirectory";
string destinationDirectory = @"C:\DestinationDirectory";
CopyDirectoryAdvanced(sourceDirectory, destinationDirectory);
Console.WriteLine("高级功能:目录复制完成。");
}
static void CopyDirectoryAdvanced(string sourceDir, string destDir)
{
DirectoryInfo sourceDirectory = new DirectoryInfo(sourceDir);
// 检查源目录是否存在
if (!sourceDirectory.Exists)
{
Console.WriteLine("源目录不存在。");
return;
}
// 如果目标目录不存在,则创建
if (!Directory.Exists(destDir))
{
Directory.CreateDirectory(destDir);
}
// 获取源目录中的所有文件和子目录
FileInfo[] files = sourceDirectory.GetFiles();
DirectoryInfo[] subdirectories = sourceDirectory.GetDirectories();
// 复制文件
foreach (FileInfo file in files)
{
string destFile = Path.Combine(destDir, file.Name);
file.CopyTo(destFile, true);
}
// 递归复制子目录
foreach (DirectoryInfo subdirectory in subdirectories)
{
string destSubdirectory = Path.Combine(destDir, subdirectory.Name);
CopyDirectoryAdvanced(subdirectory.FullName, destSubdirectory);
}
}
}
基础功能实现原理:
检查源目录是否存在,不存在则退出。
如果目标目录不存在,创建目标目录。
获取源目录中的所有文件和子目录。
遍历文件,将每个文件复制到目标目录。
递归调用自身,复制每个子目录及其内容。
高级功能实现原理:
使用DirectoryInfo代替Directory,提供更多操作。
使用FileInfo代替File,提供更多文件操作。
递归时直接使用DirectoryInfo.GetDirectories和DirectoryInfo.GetFiles,避免多次调用Directory.GetDirectories和Directory.GetFiles。
添加了CopyTo方法,提高性能。
文档更新时间: 2024-04-12 06:49 作者:admin