zoukankan      html  css  js  c++  java
  • 基于.Net的文件增量备份系统实现

      .Net中提供了许多方便使用的方法,包括在处理文件中查找文件、拷贝文件等,今天实现的是通过简易的程序实现增量的备份文件。

      首先需要的是选择备份源文件路径SourcePath和备份目标文件路径DestinationPath,然后通过StopWatch统计拷贝所耗费的时间。(注意:使用StopWatch需要添加 using System.Diagnostics命名空间,对文件的读写需要添加 using System.IO命名空间)。

    /// <summary>
    /// 增量备份函数方法
    /// </summary>
    /// <param name="SourcePath">备份源文件路径</param>
    /// <param name="DestinationPath">备份目标文件路径</param>
    public void CopyDirectory(String SourcePath, String DestinationPath){
       Stopwatch watch = new Stopwatch();
       watch.Start();      //开始计算时间
       // 检查目标目录是否以目录分割字符结束如果不是则添加
       if (DestinationPath[DestinationPath.Length - 1] != Path.DirectorySeparatorChar)
       {
          DestinationPath += Path.DirectorySeparatorChar;
       }
       //判断目标目录是否存在如果不存在则新建
       if (!Directory.Exists( DestinationPath))
        {
          Directory.CreateDirectory(DestinationPath);
        }
        // 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
        string[] fileList = Directory.GetFileSystemEntries(SourcePath);
        // 遍历所有的文件和目录
        foreach (string SourceFilename in fileList)
         {
           string filename = Path.GetFileName(SourceFilename);
              //先判断文件在目标文件夹中是否存在
              if (File.Exists(DestinationPath + filename))
               {
                  FileInfo oldFile = new FileInfo(SourceFilename);
                  FileInfo newFile = new FileInfo(DestinationPath + filename);
                  if (oldFile.LastWriteTime == newFile.LastWriteTime) 
                    {
                       continue;          //跳出本次循环
                    }
                 }
    else { // 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件 if (Directory.Exists(SourceFilename)) { CopyDirectory(SourceFilename, DestinationPath + filename); }// 否则直接Copy文件 else { File.Copy(SourceFilename, DestinationPath + filename, true);
    } } } watch.Stop();
    //时间停止
    MessageBox.Show("备份完成  耗时"+watch.Elapsed+""); //显示所消耗的时间 }
  • 相关阅读:
    容斥原理
    m元集A到n元集B的满射的个数
    二项式反演公式
    多项式定理
    组合数的基本性质
    Luogu P2408 不同子串个数
    Luogu P5410【模板】扩展 KMP
    Luogu P2336 [SCOI2012]喵星球上的点名
    Luogu P2852 [USACO06DEC]牛奶模式Milk Patterns
    Luogu P4248 [AHOI2013]差异
  • 原文地址:https://www.cnblogs.com/zam151/p/5597175.html
Copyright © 2011-2022 走看看