文件夹的复制----c语言实现

来源:互联网 发布:腾讯软件助手 编辑:程序博客网 时间:2024/05/21 09:03

代码是从网上找的,一段文件复制,一段文件夹遍历  

我把两段代码结合在一起了,对遍历代码略作修改。

//头文件

#pragma once#include <stdio.h>#include <stdlib.h>#include <tchar.h>#include <direct.h>#include <string.h>#include <io.h>#include <process.h>#define LOG#define SIZEBUFF 255#define SIZEOFBUFFER 256*1024L /* 缓冲区大小,默认为256KB */#define STR_SIZE 120extern long filesize(FILE *stream);extern int copyfile(const char* src, const char* dest);extern int stradd(char* str, char * str1, char * str2);extern int copy(char *tp, char *dir_new);extern int conf_model(char *buff);



//function.cpp


long filesize(FILE *stream){long curpos, length;curpos = ftell(stream);fseek(stream, 0L, SEEK_END);   //  0  L  移动0字节length = ftell(stream);fseek(stream, curpos, SEEK_SET);return length;}int copyfile(const char* src, const char* dest){FILE *fp1, *fp2;int fsize, factread;static unsigned char buffer[SIZEOFBUFFER];fp1 = fopen(src, "rb");fp2 = fopen(dest, "wb+");if (!fp1 || !fp2) return 0;for (fsize = filesize(fp1); fsize>0; fsize -= SIZEOFBUFFER){factread = fread(buffer, 1, SIZEOFBUFFER, fp1);fwrite(buffer, factread, 1, fp2);}fclose(fp1);fclose(fp2);return 1;}int stradd(char* str, char * str1, char * str2){sprintf(str, "%s/%s", str1, str2);return 0;}int copy(char *tp,char *dir_new){_mkdir(dir_new);long Handle;struct _finddata_t FileInfo;char str_base[STR_SIZE];stradd(str_base, tp, "*.*");if ((Handle = _findfirst(str_base, &FileInfo)) == -1L){printf("没有找到匹配的项目\n");return 0;}else{printf("%s\n", FileInfo.name);char str1[STR_SIZE];stradd(str1, tp, FileInfo.name);char str2[STR_SIZE];stradd(str2, dir_new, FileInfo.name);if (FileInfo.attrib == _A_SUBDIR && strcmp(FileInfo.name, ".") && strcmp(FileInfo.name, "..")){copy(str1,str2);}else{copyfile(str1, str2);}while (_findnext(Handle, &FileInfo) == 0){printf("%s\n", FileInfo.name);char str1[STR_SIZE];stradd(str1, tp, FileInfo.name);char str2[STR_SIZE];stradd(str2, dir_new, FileInfo.name);if (FileInfo.attrib == _A_SUBDIR && strcmp(FileInfo.name, ".") && strcmp(FileInfo.name, "..")){copy(str1,str2);}else{copyfile(str1, str2);}}_findclose(Handle);}return 0;}



//main 函数就不发了。。。。。。。。。。。。。

0 0