.NET实现简易的文件增量备份程序

 更新时间:2016年06月21日 10:27:08   作者:zam151  
这篇文章主要介绍了.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+""); //显示所消耗的时间
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 教你30分钟通过Kong实现.NET网关

    教你30分钟通过Kong实现.NET网关

    Kong是一个Openrestry程序,而Openrestry运行在Nginx上,用Lua扩展了nginx。所以可以认为Kong = Openrestry + nginx + lua,这篇文章主要介绍了30分钟通过Kong实现.NET网关,需要的朋友可以参考下
    2021-11-11
  • MVC数据验证详解

    MVC数据验证详解

    这篇文章主要为大家详细介绍了MVC数据验证的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • ASP.NET用户控件如何使用

    ASP.NET用户控件如何使用

    这篇文章主要介绍了ASP.NET用户控件的使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-09-09
  • .NET并发编程之函数闭包

    .NET并发编程之函数闭包

    这篇文章主要介绍了.NET并发编程之函数闭包,有对于这方面不太懂的同学可以研究下
    2021-02-02
  • C#中遍历各类数据集合的方法总结

    C#中遍历各类数据集合的方法总结

    C#中遍历各类数据集合的方法,这里自己做下总结:枚举类型、遍历ArrayList(Queue、Stack)、Winform窗体中的控件、HashTable哈希表等等,具体祥看下文
    2013-05-05
  • asp.net jscript 一句话木马

    asp.net jscript 一句话木马

    asp.net jscript 一句话木马...
    2007-08-08
  • asp.net中通过DropDownList的值去控制TextBox是否可编写的实现代码

    asp.net中通过DropDownList的值去控制TextBox是否可编写的实现代码

    Web窗体上有两控件,DropDownList1,TextBox1,当DropDownList的值选择是YES的时候,TextBox1可编辑,当选择NO的时候,TextBox1的值为空,并且不能编辑,该如何实现
    2012-11-11
  • asp.net截屏功能实现截取web页面

    asp.net截屏功能实现截取web页面

    这篇文章主要介绍了asp.net截屏功能实现截取web页面,是非常实用的一个功能,需要的朋友可以参考下
    2014-08-08
  • ASP.NET Core使用NLog输出日志记录

    ASP.NET Core使用NLog输出日志记录

    这篇文章介绍了ASP.NET Core使用NLog输出日志记录的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • asp.net5中的用户认证与授权(1)

    asp.net5中的用户认证与授权(1)

    Visual Studio 2015 Preview 除了给我们带了了C# 6.0的新语法、跨移动的开发以外,还给我们带来了ASP.NET5(也就是之前被称作下一代ASP.NET的ASP.NET vNext)。本文给大家介绍asp.net5中的用户认证与授权(1),需要的朋友可以参考下
    2015-10-10

最新评论