以下是基础功能实现,用于在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
方法,提高性能。高级功能的实现使用了更多的对象封装,提高了性能和灵活性。