windows 与linux 下用C++读取sqlite实现文件复制(三)
2014-11-21 09:28
726 查看
5.实现文件复制
或
View Code
int CopyFile(char *SourceFile,char *NewFile) { ifstream in; ofstream out; in.open(SourceFile,ios::binary);//打开源文件 if(in.fail())//打开源文件失败 { cout<<"Error 1: Fail to open the source file."<<endl; in.close(); out.close(); return 0; } out.open(NewFile,ios::binary);//创建目标文件 if(out.fail())//创建文件失败 { cout<<"Error 2: Fail to create the new file."<<endl; out.close(); in.close(); return 0; } else//复制文件 { out<<in.rdbuf(); out.close(); in.close(); return 1; } }
或
linux c++ 拷贝文件问题
自动包括子目录; 通过命令行参数完成<[源路径]源文件><目的路径> 要求源文件名支持通配符‘*’,例如:*.zip或*.rar,支持上述两种格式即可;
#include <stdlib.h> #include <string.h> #include <io.h> #include <stdio.h> #include <iostream> #include <windows.h>
/********************************************************************* 功能:复制文件 参数:pSrc,原文件名 pDes,目标文件名 返回:<0,失败 >0,成功 作者: *********************************************************************/ #define BUF_SIZE 256 int copyFile(const char * pSrc,const char *pDes) { FILE *in_file, *out_file; char data[BUF_SIZE]; size_t bytes_in, bytes_out; long len = 0; if ( (in_file = fopen(pSrc, "rb")) == NULL ) { perror(pSrc); return -2; } if ( (out_file = fopen(pDes, "wb")) == NULL ) { perror(pDes); return -3; } while ( (bytes_in = fread(data, 1, BUF_SIZE, in_file)) > 0 ) { bytes_out = fwrite(data, 1, bytes_in, out_file); if ( bytes_in != bytes_out ) { perror("Fatal write error.\n"); return -4; } len += bytes_out; printf("copying file .... %d bytes copy\n", len); } fclose(in_file); fclose(out_file); return 1; } /********************************************************************* 功能:复制(非空)目录 参数:pSrc,原目录名 pDes,目标目录名 返回:<0,失败 >0,成功 作者: *********************************************************************/ int copyDir(const char * pSrc,const char *pDes) { if (NULL == pSrc || NULL == pDes) return -1; mkdir(pDes); char dir[MAX_PATH] = {0}; char srcFileName[MAX_PATH] = {0}; char desFileName[MAX_PATH] = {0}; char *str = "\\*.*"; strcpy(dir,pSrc); strcat(dir,str); //首先查找dir中符合要求的文件 long hFile; _finddata_t fileinfo; if ((hFile = _findfirst(dir,&fileinfo)) != -1) { do { strcpy(srcFileName,pSrc); strcat(srcFileName,"\\"); strcat(srcFileName,fileinfo.name); strcpy(desFileName,pDes); strcat(desFileName,"\\"); strcat(desFileName,fileinfo.name); //检查是不是目录 //如果不是目录,则进行处理文件夹下面的文件 if (!(fileinfo.attrib & _A_SUBDIR)) { copyFile(srcFileName,desFileName); } else//处理目录,递归调用 { if ( strcmp(fileinfo.name, "." ) != 0 && strcmp(fileinfo.name, ".." ) != 0 ) { copyDir(srcFileName,desFileName); } } } while (_findnext(hFile,&fileinfo) == 0); _findclose(hFile); return 1; } return -3; }
View Code
相关文章推荐
- windows 与linux 下用C++读取sqlite实现文件复制(二)
- windows 与linux 下用C++读取sqlite实现文件复制(一)
- 如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)
- Windows 用c++实现,文件路径和目录名的读取保存
- windows下,c /c++实现磁盘扫描,结合配置文件,读取特定后缀文件目录代码
- windows下,c /c++实现磁盘扫描,结合配置文件,读取特定后缀文件目录代码
- 用C++实现遍历文件夹下所有文件,windows ,linux 都能用
- 如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)
- C++实现Linux和Windows下遍历指定目录下的文件
- 采用commons-configuration包实现属性文件读取的工具类(hive下windows与linux下通用)
- 如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)
- windows下,c /c++实现磁盘扫描,结合配置文件,读取特定后缀文件目录代码
- 简单文件操作(Linux下C++实现) 打开,读取 写入 关闭
- 如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)
- 如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)
- 如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)
- 配 samba ,实现linux和windows的共享 共享不应该包含可执行文件
- 实现Windows与VMware下Linux的文件共享
- linux下用c库和系统调用实现文件的复制
- Windows与VMware下的Linux文件如何实现共享