代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.IO;
usingSystem.Text;
usingSystem.Text.RegularExpressions;
namespaceAutoSync
{
publicclassNewDirectory
{
publicstaticDictionary<string,string>GetDirectories(stringdirname)
{
Dictionary<string,string>dirs=newDictionary<string,string>();
string[]strDirs=Directory.GetDirectories(dirname);
foreach(stringstrinstrDirs)
{
string[]result=str.Split(‘\’);
dirs.Add(result[result.Length-1],result[result.Length-1]);
}
returndirs;
}
}
}
代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.IO;
usingSystem.Text;
namespaceAutoSync
{
enumSyncResult
{
Success,SourceDirNotExists,DestDirNotExists
}
classFloderSync
{
publicintCreateDirCount=0;
publicintCopyFileCount=0;
publicList<string>Log=newList<string>();
privatevoidAddLog(stringlogtext)
{
if(Log.Count<1000)
Log.Add(System.DateTime.Now.ToString()+logtext);
elseif(Log.Count==1000)
Log.Add(System.DateTime.Now.ToString()+” 达到日志上限,不再追加”);
}
publicSyncResultStartSync(stringsourcedir,stringdestdir)
{
//传入目录名保护
sourcedir=sourcedir.Trim();
destdir=destdir.Trim();
//保证目录最后一个字符不是斜杠
if(sourcedir[sourcedir.Length-1]==’\’)
sourcedir=sourcedir.Remove(sourcedir.Length-1);
if(destdir[destdir.Length-1]==’\’)
destdir=destdir.Remove(destdir.Length-1);
//判断目录是否存在
if(!Directory.Exists(sourcedir))returnSyncResult.SourceDirNotExists;
if(!Directory.Exists(destdir))returnSyncResult.DestDirNotExists;
//获取源、目的目录内的目录信息
Dictionary<string,string>SDirInfo=newDictionary<string,string>();
Dictionary<string,string>DDirInfo=newDictionary<string,string>();
Dictionary<string,string>aa=newDictionary<string,string>();
SDirInfo=NewDirectory.GetDirectories(sourcedir);//获取源目录的目录信息
DDirInfo=NewDirectory.GetDirectories(destdir);//获取目标目录的目录信息
//
// 开始同步两个目录,但只先同步源目录信息
//——比较两目录中的子目录信息———————
foreach(KeyValuePair<string,string>kvpinSDirInfo)//在查找有无源目录存在而在目标目录中不存在的目录
{
if(!DDirInfo.ContainsKey(kvp.Key))//如果目标目录中不存在目录,则马上建立
{
stringdirname=destdir+”\”+kvp.Key;
Directory.CreateDirectory(dirname);
AddLog(” 创建目录:”+dirname);
CreateDirCount++;
}
//递归调用目录同步函数,实现嵌套目录一次性全同步
StartSync(sourcedir+”\”+kvp.Key,destdir+”\”+kvp.Key);
}
//取得源目录下所有文件的列表
string[]SFiles=Directory.GetFiles(sourcedir);
//string[]DFiles=Directory.GetFiles(destdir);
//——比较两目录中的文件信息(本层目录)————–
foreach(stringsfilenameinSFiles)
{
stringdfilename=destdir+”\”+Path.GetFileName(sfilename);
if(File.Exists(dfilename))//如果目的目录中已经存在同名文件,则比较其最后修改时间,取最新的为准
{
//取得源、 目的目录中同名文件的文件信息
FileInfosfi=newFileInfo(sfilename);
FileInfodfi=newFileInfo(dfilename);
//如果源文件大于目的文件修改时间5秒上述就是C#学习教程:c#同步两个子目录文件示例分享 两个文件夹同步分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/905221.html