日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

备份文件夹

發布時間:2023/12/2 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 备份文件夹 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用到的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

總結

以上是生活随笔為你收集整理的备份文件夹的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。