資源簡介
實驗五.zip

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
//整體思路同windows非常相似
void?Mycp(char?*fsourcechar?*ftarget);???????//將源目錄信息復制到目標目錄下
void?CopyFile(char?*fsourcechar?*ftarget);??//直接復制
//各種函數原型的應用,參數的設置,查找很多函數資料
int?main(int?argcchar?*argv[])
{
????struct?stat?statbuf;?????//stat結構
????struct?utimbuf?timeby;??//文件時間結構
????/*
????文件相關三個時間字段stat
????st_atime????最后存取時間
????st_mtime????最后修改時間
????st_ctime????i節點狀態的最后更改時間
????struct?utimbuf
????{
????????time_t?actime;?????????文件數據的最后存取時間
????????time_t?modtime;????????文件數據的最后修改時間
????}
????*/
????DIR?*?dir;?????????????//DIR結構的指針,指向目錄的第一個文件
????if(argc?!=?3)??????????//參數出錯
????{
????????printf(“ARGC?ERROR!\N“);
????}
????else
????{
????????/*opendirclosedir
????????DIR?*?opendir(const?char?*name);
????????int?closedir(DIR?*?dir);????關閉指定目錄文件,釋放相關資源
????????*/
????????if((dir?=?opendir(argv[1]))?==?NULL)
????????{
????????????printf(“Source?Folder?does?not?exist.\n“);????//源文件打開出錯
????????}
????????if((dir?=?opendir(argv[2]))?==?NULL)
????????{
????????????//時間屬性
????????????/*utime函數:修改文件的存取和修改時間
????????????int?utime(const?char?*filenameconst?struct?utimbuf?buf);
????????????*/
????????????//相當于windows中CreateFileD函數功能
????????????stat(argv[1]&statbuf);
????????????/*
????????????stat(const?char?*file_namestruct?stat?*buf)
????????????統計文件名指定的文件屬性信息
????????????*/
????????????mkdir(argv[2]statbuf.st_mode);????//創建目錄
????????????/*
????????????mkdir(const?char?*?dir_pathnamemode_t?mode)
????????????rmdir(const?char?*?dir_pathname)??刪除
????????????*/
????????????timeby.actime?=?statbuf.st_atime;???//修改時間屬性,存取時間
????????????timeby.modtime?=?statbuf.st_mtime;??//修改時間
????????????utime(argv[2]&timeby);
????????}
????????Mycp(argv[1]argv[2]);????//開始復制
????}
????printf(“Copy?Finished!\n“);
????return?0;
}
void?Mycp(char?*fsourcechar?*ftarget)
{
???char?source[512];
???char?target[512];
???struct?stat?statbuf;
???struct?utimbuf?timeby;
???DIR?*dir;
???struct?dirent?*?entry;
???/*
???struct?dirent
???{ino_t?d_ino;??????????????????inode索引節點號
????char?d_name[NAME_MAX+1]???????文件名
????unsigned?char?d_type;?????????文件類型
???}
???*/
???strcpy(sourcefsource);
???strcpy(targetftarget);
???dir?=?opendir(source);?????//打開目錄返回指向DIR結構的指針
???//refer?to?P215
???while((entry?=?readdir(dir))?!=?NULL)??//讀目錄
???/*
???readdir
???struct?dirent?*readdir(DIR?*dir)
???*/
???{
???????if(strcmp(entry->d_name“.“)?==?0?||?strcmp(entry->d_name“..“)?==?0)???//判斷目錄
????????????????continue;
???????if(entry->d_type?==?4)
???????{
???????????strcat(source“/“);
???????????strcat(sourceentry->d_name);
???????????strcat(target“/“);
???????????strcat(targetentry->d_name);
???????????//相當于windows中CreateFileD函數功能
???????????stat(source&statbuf);???//統計文件屬性信息
???????????mkdir(targetstatbuf.st
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-04-26?15:57??實驗五\linux\
?????文件????????5031??2014-04-24?15:39??實驗五\linux\LINUXCP.c
?????目錄???????????0??2015-04-26?15:57??實驗五\windows\
?????文件????????7581??2014-04-24?15:01??實驗五\windows\winmycp.cpp
?????目錄???????????0??2015-04-26?15:57??實驗五\
評論
共有 條評論