1,文件同步模块详解
2,文件同步功能主要是拿来对主机向备用机实时同步,使得两边的系统文件动态实时同步。
主要分为两种同步形式:第一种为定时同步;第二种为实时同步(也可以称为增量同步)。
3,第一种定时同步:主要运用多线程来对文件进行同步操作。主要运用方法如下:
/// <summary>
/// 递归-拷贝文件夹及文件
/// </summary>
/// <param name="sourceDirectoryUrl">源路径</param>
/// <param name="copyDirectoryUrl">复制路径</param>
public void CopyDirectory(string sourceDirectoryUrl, string copyDirectoryUrl)
{
try
{
source = copyDirectoryUrl;
string folderName = sourceDirectoryUrl.Substring(sourceDirectoryUrl.LastIndexOf("\\") + 1); //+"\\" + folderName
string desfolderdir = copyDirectoryUrl ;
if (copyDirectoryUrl.LastIndexOf("\\") == (copyDirectoryUrl.Length - 1))
{
desfolderdir = copyDirectoryUrl + folderName;
}
string[] filenames = Directory.GetFileSystemEntries(sourceDirectoryUrl);
foreach (string file in filenames)// 遍历所有的文件和目录
{
if (Directory.Exists(file))// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
{
string currentdir = desfolderdir + "\\" + file.Substring(file.LastIndexOf("\\") + 1);//"\\" +
if (!Directory.Exists(currentdir))
{
Directory.CreateDirectory(currentdir);
}
CopyDirectory(file, currentdir);
}
else // 否则直接copy文件
{
string srcfileName = file.Substring(file.LastIndexOf("\\") + 1);
srcfileName = desfolderdir + "\\" + srcfileName;//"\\"+
if (!Directory.Exists(desfolderdir))
{
Directory.CreateDirectory(desfolderdir);
}
File.Copy(file, srcfileName, true);//本地的可以复制
}
}
}
catch (Exception ex)
{
Log.Instance.WriteLog("错误日志", ex.Message + ex.StackTrace);
}
}
在自定义的多线程中使用如上方法的代码即可。需要注意的是跨服务器同步文件,目标文件得设置成共享文件的权限。本机则无需该权限。定时同步文件的功能就介绍到这啦!!!下一章节准备讲解下实时文件同步的功能实现。欢迎评论和留言交流