文件/文件夹同步机制(类似公文包)

因为本人经常需要同步一些文件,但是公文包有时不能满足要求,所以自己试着研究,希望大家PP,只要大家在前端调用就可以,本来也做好一个前端,但是没有空间可以上传,希望大家有免费的地方介绍以下,谢谢!

public class FileExpand
 {
  /// <summary>
  /// 文件比对,一样返回true否则为false
  /// </summary>
  /// <param name="AFileSrc">源文件</param>
  /// <param name="AFileDec">目标文件</param>
  /// <returns></returns>
  public static bool FileCompare(string AFileSrc, string AFileDec)
  {
   if (!File.Exists(AFileSrc) || !File.Exists(AFileDec))
    return false;
   if (AFileSrc == AFileDec)
    return true;

   int file1byte = 0;
   int file2byte = 0;
   using (FileStream fs1 = new FileStream(AFileSrc, FileMode.Open), fs2 = new FileStream(AFileDec, FileMode.Open))
   {//  检查文件大小。如果两个文件的大小并不相同,则视为不相同。
    if (fs1.Length != fs2.Length)
    {// 关闭文件。
     fs1.Close();
     fs2.Close();
     return false;
    }//  逐一比较两个文件的每一个字节,直到发现不相符或已到达文件尾端为止。
    do
    {
     // 从每一个文件读取一个字节。
     file1byte = fs1.ReadByte();
     file2byte = fs2.ReadByte();
    }
    while ((file1byte == file2byte) && (file1byte != -1));
    // 关闭文件。
    fs1.Close();
    fs2.Close();
   }//  返回比较的结果。在这个时候,只有当两个文件的内容完全相同时,"file1byte" 才会等于 "file2byte"。
   return ((file1byte - file2byte) == 0);
  }

  /// <summary>
  /// 把文件A复制到文件B
  /// </summary>
  /// <param name="AFileSrc">源文件</param>
  /// <param name="AFileDec">目标文件</param>
  /// <returns></returns>
  public static bool FileCopy(string AFileSrc, string AFileDec)
  {
   if (!File.Exists(AFileSrc))
    return false;
   try
   {
    if (File.Exists(AFileDec))
     File.Copy(AFileSrc, AFileDec, true);
    else
     File.Copy(AFileSrc, AFileDec);
    return true;
   }
   catch (Exception ex)
   {
    return false;
   }

  }

  /// <summary>
  /// 文件夹同步
  /// </summary>
  /// <param name="ADireSrc">源文件夹</param>
  /// <param name="ADireDec">目标文件夹</param>
  /// <returns></returns>
  public static bool DirectorySyn(string ADireSrc, string ADireDec)
  {
   if (!Directory.Exists(ADireDec) || !Directory.Exists(ADireSrc))
    return false;
   try
   {
    SearchDirectory(ADireSrc, ADireDec);
    return true;
   }
   catch (Exception ex)
   {
    return false;
   }
   
  }

  /// <summary>
  /// 文件夹遍历
  /// </summary>
  /// <param name="ADireSrc">源文件夹</param>
  /// <param name="ADireDec">目标文件夹</param>
  private static void SearchDirectory(string ADireSrc, string ADireDec)
  {
   if (Directory.Exists(ADireSrc))
   {
    string[] strArray = Directory.GetDirectories(ADireSrc);
    FilesCompare(ADireSrc, ADireDec);
    if (strArray.Length > 0)
    {
     foreach (string sPath in strArray)
     {
      string sDecPath = sPath.Replace(ADireSrc, ADireDec);
      if (!Directory.Exists(sDecPath))
       Directory.CreateDirectory(sDecPath);
      SearchDirectory(sPath, sDecPath);
     }
    }
    

   }
  }
  /// <summary>
  /// 同一文件夹中文件同步
  /// </summary>
  /// <param name="ADireSrc">源文件夹</param>
  /// <param name="ADireDec">目标文件夹</param>
  private static void FilesCompare(string ADireSrc, string ADireDec)
  {
   if (Directory.Exists(ADireSrc))
   {
    string[] strArray = Directory.GetFiles(ADireSrc);
    if (strArray.Length > 0)
    {
     foreach (string sPath in strArray)
     {
      if (!FileCompare(sPath, sPath.Replace(ADireSrc, ADireDec)))
       FileCopy(sPath, sPath.Replace(ADireSrc, ADireDec));
     }
    }
   }


  }
 } 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值