备份文件夹

用到的API和数据结构:

WINDOWS数据结构:

WIN32_FIND_DATA

WINDOWS API:

FindFirstFile

FindNextFile

CompareFileTime

CopyFIle

DeleteFile

View Code
#include <windows.h>
#include <iostream>
#include <string>
using namespace std;
#define MAXN 10000
typedef struct _SRCFILE
{WIN32_FIND_DATA fd;//我WIN32_FIND_DATA关于文件的全部属性信息的数据结构bool IsNew;
}SRCFILE;SRCFILE srcFiles[MAXN], desFiles[MAXN];WIN32_FIND_DATA fd;
int iSrcFiles;
int iDesFiles;void get_source(string str)
{bool bRet = true;iSrcFiles = 0;HANDLE hFile = FindFirstFile(str.c_str(),&fd);while( hFile != INVALID_HANDLE_VALUE && bRet ){if( fd.dwFileAttributes == FILE_ATTRIBUTE_ARCHIVE ){srcFiles[iSrcFiles].fd = fd;srcFiles[iSrcFiles].IsNew = false;iSrcFiles++;}bRet = FindNextFile(hFile, &fd);}}void get_destion(string str)
{bool bRet = true;iDesFiles = 0;HANDLE hFile = FindFirstFile(str.c_str(),&fd);while( hFile != INVALID_HANDLE_VALUE && bRet ){if( fd.dwFileAttributes == FILE_ATTRIBUTE_ARCHIVE ){desFiles[iDesFiles].fd = fd;desFiles[iDesFiles].IsNew = false;iDesFiles++;}bRet = FindNextFile(hFile, &fd);}
}void solve(string sp, string st)
{int i ,j;//  printf("iSrcFiles = %d iDesFiles = %d\n", iSrcFiles, iDesFiles);for(i = 0; i < iSrcFiles; i++){   int f = 0;for(j = 0; j < iDesFiles; j++){if( strcmp(srcFiles[i].fd.cFileName,desFiles[j].fd.cFileName) == 0 && CompareFileTime(&srcFiles[i].fd.ftLastWriteTime, &desFiles[j].fd.ftLastWriteTime) == 0 ){f = 1;break;}}if( !f )srcFiles[i].IsNew = true;elsedesFiles[i].IsNew = true;}for( i = 0; i < iSrcFiles; i++){if( srcFiles[i].IsNew ){string spath = sp + srcFiles[i].fd.cFileName;string dpath = st + srcFiles[i].fd.cFileName;printf("备份的是:%s\n", spath.c_str());CopyFile(spath.c_str(),dpath.c_str(),false);//备份也要指定路径+文件名
       }}for(i = 0; i < iDesFiles; i++){if( desFiles[i].IsNew == false ){string dpath = st + desFiles[i].fd.cFileName; //cFileName只包含文件名,删除要指定路径printf("删除的是:%s\n",dpath.c_str());DeleteFile(dpath.c_str());}}}int main( )
{string str("E:\\桂林\\*.*"); //查询这个文件夹下的所有文件string st("D:\\桂林\\*.*");    get_source(str);get_destion(st);string sq("E:\\桂林\\");string sp("D:\\桂林\\");solve(sq,sp);return 0;}

转载于:https://www.cnblogs.com/tangcong/archive/2012/10/16/2725905.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363156.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试整理(1):原生ajax

接到电话面试&#xff0c;有一些送分题答的不好&#xff0c;在这里整理一下 问题&#xff1a;原生ajax的工作流程是怎么样的&#xff1f; 老用封装好的工具&#xff0c;原生的ajax其实并不熟悉&#xff0c;今天复习一下。主要参考http://www.w3school.com.cn/ajax/ 要发一个…

QT

Qt软件 Qt是一个跨平台的C图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的&#xff0c;很容易扩展&#xff0c;并且允许真正地组件编程。 自从1996年早些时候&#xff0c;Qt进入商业领域&#xff0c;它已经成为全…

js获得页面鼠标位置

1.客户区坐标位置&#xff1a;clientX&#xff0c;clientY 鼠标相对于在当前页面可视范围左上角的位置 2.页面坐标位置&#xff1a;pageX,pageY 鼠标相对于页面左上角的位置&#xff08;受滑动等影响&#xff0c;例如pageYclientY scrollTop&#xff09; 3.屏幕坐标位置&#x…

针对新手的Java EE7和Maven项目–第7部分

从前面的部分恢复 第1 部分 &#xff0c; 第2 部分 &#xff0c; 第3 部分 &#xff0c; 第4 部分 &#xff0c; 第5 部分 &#xff0c; 第6部分 在上一篇文章&#xff08;第6章&#xff09;中&#xff0c;我们发现了如何使用Arquillian和Wildfly 8.1进行单元测试JPA2域模型。…

具有Akka反应流的反应队列

反应性流是最近宣布的一项计划&#xff0c;旨在在JVM上为具有内置背压的异步流处理创建标准。 该工作组由Typesafe&#xff0c;Red Hat&#xff0c;Oracle&#xff0c;Netflix等公司组成。 早期的实验性实现之一是基于Akka的 。 预览版0.3包括演员生产者和消费者&#xff0c;这…

Django框架下报的版本问题

报错环境 python3.6.5&#xff0c;django2.2&#xff0c;PyMySQL0.9.3 …… django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3. 解决方法&#xff1a; Django连接MySQL时默认使用MySQLdb驱动&#xff0c;但MySQLdb不支持…

Gradle入门:简介

Gradle是一种构建工具&#xff0c;可以使用基于Groovy编程语言的内部DSL替换基于XML的构建脚本。 最近它吸引了很多关注&#xff0c;这就是为什么我决定仔细研究一下。 这篇博客文章是我的Gradle教程的第一部分&#xff0c;它有两个目标&#xff1a; 帮助我们安装Gradle 描…

首页回顾功能

公司要弄一个首页回顾的功能&#xff0c;可以查看以往某个时间的首页。程序每天自动在上午和下午分别抓取一个页面&#xff0c;生成地址为http://xxx.com/review/channel20090715am.html 的形式。 这个功能用到了jQuery UI 的 datepicker日历插件&#xff0c;但是主要的还是通过…

浏览器内核总结

一般来讲&#xff0c;浏览器分为外壳部分和渲染部分。外壳部分就是用户看得见摸得到的外观和操作界面;而渲染部分则包括了浏览器内核和JS引擎&#xff0c;其中JS引擎主要负责执行javascript语言实现网页上的动作&#xff0c;而内核则负责渲染网页&#xff0c;把数据变成用户可以…

mysql卸载重装总是卡在starting server这一选项

因为自己不小心把msyql给下载了&#xff0c;重装了一个5.7版本的可是在安装时卡在starting server这一部分&#xff0c;运行不下去。重写卸载重装仍然不成功&#xff0c;还是卡在starting server.无法继续下面的安装&#xff0c;查看日志也没有报错信息。 问题分析&#xff1a;…

箭头函数与普通函数的区别

箭头函数&#xff1a; let fun () > {console.log(lalalala); } 普通函数&#xff1a; function fun() {console.log(lalla); } 箭头函数相当于匿名函数&#xff0c;并且简化了函数定义。箭头函数有两种格式&#xff0c;一种只包含一个表达式&#xff0c;连{ ... }和return…

前端基础-HTML标记语言

阅读目录 一、 HTML标签与文档结构二、 HTML标签详细语法与注意点三、 HTML中标签分类四、 HTML注释 一、 HTML标签与文档结构 HTML作为一门标记语言&#xff0c;是通过各种各样的标签来标记网页内容的。我们学习HTML主要就是学习的HTML标签。 那什么是标签呢&#xff1f; #…

带有Gradle的Docker容器分为4个步骤

您是否需要通过Java Web应用程序创建Docker映像&#xff1f; 您在使用Gradle吗&#xff1f; 如果是这样&#xff0c;那么您距Docker nivana仅4步之遥。 对于此示例&#xff0c;我将使用一个简单的Spring Boot应用程序。 您可以在我的名为galoshe的Github存储库中找到所有源代码…

第七周

这个作业属于哪个课程C语言程序设计 &#xff08;第三版&#xff09;这个作业要求在哪里2019春季第七周作业我的课程目标学习指针的运用这个作业在哪个具体方面帮助我实现目标这个作业让我知道了指针实用性参考文献无一、2019春第七周作业&#xff08;基础题&#xff09; 7-2 自…

Java EE 8 –为更多设备提供更多应用程序

如果我不喜欢夏天的一件事&#xff0c;那就是事实是没有太多要分享或谈论的新闻。 谁决定将Java Day Tokyo置于这一年的无聊时间里&#xff0c;谁干得不错&#xff0c;就给我一个机会撰写有关新的和即将到来的Java EE 8规范的博客文章&#xff0c;其中包含了更多的思想和建议。…

Gradle入门:依赖管理

即使不是没有可能&#xff0c;创建没有任何外部依赖关系的现实应用程序也是一项挑战。 这就是为什么依赖性管理是每个软件项目中至关重要的部分的原因。 这篇博客文章描述了我们如何使用Gradle管理项目的依赖关系。 我们将学习配置已使用的存储库和所需的依赖项。 我们还将通过…

HTML5常用标签及特殊字符表

*http://html5doctor.com/nav*http://html5doctor.com/article*http://html5doctor.com/section*http://html5doctor.com/asidehttp://html5doctor.com/divhttp://html5doctor.com/figurehttp://html5doctor.com/outlinehttp://html5doctor.com/semantics p 和 span 的理解 p标…

【转载】使用Imaging组件加载GIF动画

Mobil手机加载GIF动态图像的方法有两种&#xff0c;一个就是使用GIF89a标准算法&#xff0c;另一个就是使用SDK自带的Imaging组件&#xff0c;这两种方法是很典型的手机图像处理技术的实践。使用Imaging组件加载GIF比使用标准算法处理高效的多&#xff0c;特别是在处理真彩GIF动…

【处理手记】Configuration system failed to initialize异常的另类原因

有个c#程序在某台电脑上&#xff0c;执行某个操作时&#xff0c;总是会报如图错误&#xff1a; 度娘一番&#xff0c;发现市面上常见的原因是配置文件中的特定节点的位置不对&#xff0c;或者配置文件损坏等等&#xff0c;而这个程序根本没有使用内置的配置文件方案&#xff0c…

学习《Building Applications with FME Objects》 之四 从数据集读取要素

FMEOReader可以访问任何支持格式的数据。 FMEOReader返回两类要素&#xff1a;schema&#xff08;模式&#xff09;要素和数据要素&#xff0c;模式要素用于描述数据集模型。每种支持的格式都有一个模式&#xff0c;一个模式要素是一类要素的数据模型&#xff0c;模式要素描述属…