.NET实现简易的文件增量备份程序
程序员文章站
2023-12-04 16:37:24
.net中提供了许多方便使用的方法,包括在处理文件中查找文件、拷贝文件等,今天实现的是通过简易的程序实现增量的备份文件。
首先需要的是选择备份源文件路径sourcep...
.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+""); //显示所消耗的时间 }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。