copy.rar

  • Roibn
    了解作者
  • C/C++
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 0
    下载次数
  • 2019-01-23 13:30
    上传日期
copy文件夹的功能,将一个文件的内容复制成另一个文件
copy.rar
  • copy.c
    2.9KB
内容介绍
#include "myhead.h" //目录结构体 struct cpdir_path { char orig_path[1024]; char target_path[1024]; }; //目录结构体初始化 struct cpdir_path *init(void) { struct cpdir_path *p; p=(struct cpdir_path *)malloc(sizeof(struct cpdir_path)); if(p == NULL) { printf("malloc p failure!\n"); return NULL; } memset(p->orig_path,0,sizeof(p->orig_path)); memset(p->target_path,0,sizeof(p->target_path)); return p; } void copyfile(void *arg) { struct cpdir_path *path; path = (struct cpdir_path *)arg; char buffer[1024]; memset(buffer,0,sizeof(buffer)); int fd1,fd2,r_len,w_len; //printf("原始文件路径 is %s\n",path->orig_path); //printf("目标文件路径 is %s\n",path->target_path); //打开原始文件 fd1 = open(path->orig_path,O_RDONLY,0777); if(fd1 == -1) { perror("open origfile failure!\n"); return; } //打开目标文件 fd2 = open(path->target_path,O_RDWR|O_CREAT,0777); if(fd2 == -1) { perror("open targetfile failure!\n"); return; } //从源文件当中读取数据到buffer当中 while(r_len = read(fd1,buffer,sizeof(buffer))!=0) { //将数据写入目标文件 w_len = write(fd2,buffer,strlen(buffer)); if(w_len == -1) { perror("write failure!\n"); return; } //清空buffer memset(buffer,0,sizeof(buffer)); } } int copydir(char *sourcedir,char *destdir) { int dir_mk; struct cpdir_path *file_path; file_path = init();//结构体初始化 DIR *dir1; DIR *dir2; char buf1[1024]; char buf2[1024]; struct dirent *temp; struct stat st; memset(buf1,0,sizeof(buf1));//清空数组 memset(buf1,0,sizeof(buf1));//清空数组 //打开原始目录 printf("dir1 目录 = %s\n",sourcedir); dir1 = opendir(sourcedir); if(dir1 == NULL) { printf("opendir dir1 failure!\n"); return -1; } printf("dir2 目录 = %s\n",destdir); //打开目标目录 dir2 = opendir(destdir); if(dir2 == NULL) { printf("opendir dir2 failure!\n"); return -1; } //遍历目录信息 while((temp = readdir(dir1)) != NULL) { if((strcmp(temp->d_name, ".") != 0) && (strcmp(temp->d_name, "..") != 0)) { //字符串拼接 sprintf(buf1,"%s/%s",sourcedir,temp->d_name);//新原始目录路径 sprintf(buf2,"%s/%s",destdir,temp->d_name);//新目标目录路径 stat(buf1,&st); if(S_ISDIR(st.st_mode))//判断目录 { dir_mk = mkdir(buf2,0777); if(dir_mk == -1) { printf("mkdir destdir failure!\n"); } copydir(buf1,buf2); } else//除了目录的其他文件 { strcpy(file_path->orig_path,buf1); strcpy(file_path->target_path,buf2); copyfile((void *)file_path); } } } } int main(int argc,char *argv[]) { if(argc == 3) { printf("orig_path is %s\n",argv[1]); printf("target_path is %s\n",argv[2]); copydir(argv[1],argv[2]);//拷贝文件夹 } else { printf("请输入正确的格式:./copydir /***/***/*** /***/***/***\n"); } }
评论
    相关推荐
    • fastcopy2.08
      FastCopy是Windows平台上最快的文件拷贝、删除软件。由于其功能强劲,性能优越,一时间便超越相同类型的所有其他软件。由于该软件十分小巧,你甚至可以在安装后,直接将安装目录中的文件复制到任何可移动存储设备中...
    • fast copy 2.08
      拷贝数据速度比较快 可以多开 FastCopy is the Fastest Copy Delete Software on Windows It can copy delete unicode and over MAX PATH 260byte pathname files It always run by multi threading It don...
    • firebase-copy
      $ npm install --save firebase firebase-copy 用法 var firebaseCopy = require ( 'firebase-copy' ) ; var Firebase = require ( 'firebase' ) ; var Firebase1 = firebaseCopy ( ) ; var Firebase2 = ...
    • CopyCopy-crx插件
      *通过右键单击和选择CopyCopy,轻松复制网页的片段,包括文本,链接和图像*立即粘贴任何其他计算机或电话*永远存储所有剪辑,并从现在或将来的任何浏览器访问我们可以安全地存储数据,并让您立即访问其他PC或手机。...
    • FastCopy203
      用过的朋友就不要怪我火星了,今天用了fastcopy才知道windows拷贝大文件有多慢,特别是当运行很多软件的时候,windows自作聪明文件缓存机制会在拷贝超大文件的时候吃掉所有可用的物理内存,让其他的软件运行慢如蜗牛...
    • FastCopy
      FastCopy 是 Windows 平台上最快的文件拷贝、删除软件。由于其功能强 劲,性能优越,一时间便超越相同类型的所有其他软件。由于该软件十分 小巧,你甚至可以在安装后,直接将安装目录中的文件复制到任何可移动...
    • copyto1.0.2
      Pc版Copy to是一款复制粘贴增强工具,可以方便的将你复制的东西发送到web 或程序中,避免了ctrl + C再ctrl +V ,还有不同窗口切换的麻烦。目前,copy to默认提供了二十多款程序供用户个性化选择,并不断按你的要求添加...
    • FastCopy 经典copy绿色版
      Fastcopy,日本的最快的文件拷贝工具!经测试,一个 424 MB 的电影其拷贝时间仅为 21 秒,传输速度达到了 21 MB/秒,不知比 TotalCopy之流快了多少倍  每秒21MB的拷贝神话  磁盘间相互拷贝文件是司空见惯的事情,...
    • postgreSQL copy
      据库入库方法,用copy方式入库,插入速度很快,使用的是postgre jdbc
    • qpopper2.53.tar.Z
      pop3 server