开学的在彭老师的指导下,写了一个文件服务器/客户端的文件同步程序。这里只介绍得如何同步两个文件夹的内容。
核心思路就是比较两个文件夹里的对应文件或文件夹。如果文件不存在,则直接复制过来。如果文件的最后一次写时间小于源文件的最后一次写时间,则也复制过来。
这段代码我是用C#实现。
//递归遍历文件树
static void TraverseFileTree(DirectoryInfo sourceDirectory, DirectoryInfo destinationDirectory)
{
FileInfo[] files = sourceDirectory.GetFiles();
foreach(FileInfo sourceFile in files)
{
String fileName = destinationDirectory.FullName + @"\" + sourceFile.Name;
FileInfo destinationFile = new FileInfo(fileName);
if (!destinationFile.Exists || destinationFile.LastWriteTime < sourceFile.LastWriteTime)
{
if (destinationFile.Exists) destinationFile.Delete();
sourceFile.CopyTo(fileName);
}
}
DirectoryInfo[] sourceSubdirectories = sourceDirectory.GetDirectories();
foreach(DirectoryInfo sourceSubdirectory in sourceSubdirectories)
{
String directoryName = destinationDirectory.FullName + @"\" + sourceSubdirectory.Name;
DirectoryInfo destinationSubdirectory = new DirectoryInfo(directoryName);
if (!destinationSubdirectory.Exists) destinationSubdirectory.Create();
TraverseFileTree(sourceSubdirectory, destinationSubdirectory);
}
}
}