LinuxC實現資料夾及檔案拷貝

2021-08-11 19:24:51 字數 1888 閱讀 8856

linuxc實現資料夾及檔案拷貝

#include#include#include#include#include#include#include//判斷是否為目錄

int is_dir(char *path)

//處理字串的函式

int endwith(char *s,char c)

char* str_contact(char *str1,char *str2)

strcat(result,str1);

strcat(result,str2);

return result;

}//複製檔案函式

void copy1(char* source_path,char* destination_path)

out=read(fd,buffer,1024);

if(out==-1)

close(fd);

size=strlen(buffer);

fd1=open(destination_path,o_wronly|o_creat,s_irwxu|s_irwxg);

if(fd1==-1)

in=write(fd1,buffer,size);

if(in==-1)

}//複製資料夾函式

void copy2(char* source_path,char* destination_path)

char *path;

path=(char*)malloc(512);

//相當於其他語言的string path="",在純c環境下字串必須自己管理大小

//這裡path直接申請512的位置的空間,用於目錄的拼接

path=str_contact(path,source_path);

struct dirent* filename;

dir* sn=opendir(path);

while(filename=readdir(sn))

else

char* file_destination_path;

file_destination_path=(char*)malloc(512);

if(!endwith(destination_path,'/'))

else

//取檔名與當前資料夾拼接成乙個完整路徑

file_source_path=str_contact(file_source_path,filename->d_name);

file_destination_path=str_contact(file_destination_path,filename->d_name);

if(is_dir(file_source_path))

}//否則按照單一檔案的方法進行複製

else

}}int main(int argc,char* argv)

char* source_path=argv[1];

char* destination_path=argv[2];

dir* source=opendir(source_path);

dir* destination=opendir(destination_path);

if(!source||!destination)

copy2(source_path,destination_path);

return 0;

}

終端輸入:

gcc -o fu fu.c

./fu /usr/local/a/aa/a.txt /usr/local/b

執行後會發現/usr/local/b下多了a下的aa目錄及a.txt

Linux C 實現檔案複製 檔案及資料夾刪除功能

linux下的檔案操作其實是個很普通的小功能,linux c提供了一些系統函式可以呼叫,我們使用的時候只需按照自己的需要封裝一下即可。實現檔案從乙個目錄複製到另外乙個目錄,以下是最簡單的操作,正式的工程中為了嚴謹起見,盡量加上錯誤檢查。include include include include ...

Linux C 刪除資料夾

方法一 include include include include include include define maxdir 256 char dirname maxdir rootdir maxdir void del dir char path while dirp readdir dp ...

Linux C遍歷資料夾

0x01 首先講一講遍歷資料夾必須要知道的乙個結構體struct dirent struct dirent0x2 具體用法見如下 query.c include include intmain int argc,char ar pdir opendir ar 1 if null pdir while...