zoukankan      html  css  js  c++  java
  • [转载]Linux C编程-实现文件夹的递归拷贝

    copy(读取的路径或名字,目标文件的路径或名字)

    {

           if(读取的是一个文件夹)

           {     创造一个文件夹

                 打开文件夹,读取文件夹的内容

                 判断是否是一个文件夹  是:递归copy(xx,xx); 

                 否,说明是个文件,拷贝文件       

           }

    }

    1. int copy_r(char *read_dir_path, char *write_dir_path)  
    2. {  
    3.     DIR * p_dir;  
    4.     struct dirent * p_dirent;  
    5.   
    6.       
    7.     char read_buf[256];  
    8.     char write_buf[256];  
    9.   
    10.     sprintf(read_buf,"%s/", read_dir_path);  
    11.     sprintf(write_buf,"%s/",write_dir_path);  
    12.   
    13.     strcat(read_dir_path,"/");  
    14.     if( Is_dir(read_buf) )  
    15.     {  
    16.         //mkdir   
    17.         if(mkdir(write_buf, 0755) < 0)  
    18.         {  
    19.             printf("mkdir fall:%s ", strerror(errno));  
    20.             return -1;  
    21.         }  
    22.   
    23.   
    24.         //opendir and readdir   
    25.   
    26.         if((p_dir = opendir(read_buf)) == NULL )  
    27.         {  
    28.             printf("Usage:cp -r <src_dir> <dat_dir> error:%s ",strerror(errno));  
    29.             return -1;  
    30.         }  
    31.   
    32.         while((p_dirent=readdir(p_dir)) != NULL)  
    33.         {  
    34.             char read_buffer[256];  
    35.             char write_buffer[256];  
    36.             sprintf(read_buffer,"%s%s", read_buf, p_dirent->d_name);  
    37.             sprintf(write_buffer,"%s%s", write_buf, p_dirent->d_name);  
    38.   
    39.             printf("%s %s ",read_buffer,write_buffer);  
    40.   
    41.             //it is a directory   
    42.             if( Is_dir(read_buffer) && 0 != strcmp(p_dirent->d_name, ".") && 0 != strcmp(p_dirent->d_name, "..") )  
    43.             {  
    44.                   
    45.                 copy_r(read_buffer, write_buffer);  
    46.             }  
    47.   
    48.             else if(0 != strcmp(p_dirent->d_name, ".") && 0 != strcmp(p_dirent->d_name, ".."))  
    49.             {  
    50.                 //copy file   
    51.                 if( file_copy_line(read_buffer, write_buffer) < 0 )  
    52.                     return 0;  
    53.             }  
    54.   
    55.   
    56.         }  
    57.   
    58.         closedir(p_dir);  
    59.   
    60.     }  
    61.   

    原文地址http://www.linuxidc.com/Linux/2011-08/41472.htm

    另一篇http://blog.csdn.net/blogofshuguang/article/details/17040915

  • 相关阅读:
    HDU5586 最大连续和 xingxing在努力
    HDU5587 递推式+二分 xingxing在努力
    HDU2639 第k小01背包 xingxing在努力
    Java面向对象之继承
    Java面向对象之封装
    Java面向对象之封装
    Java流程控制语句
    Java流程控制语句
    Java运算符
    Java运算符
  • 原文地址:https://www.cnblogs.com/shan2017/p/7647272.html
Copyright © 2011-2022 走看看