標籤:des style blog http io ar color os sp
5.實現檔案複製
1 int CopyFile(char *SourceFile,char *NewFile) 2 { 3 ifstream in; 4 ofstream out; 5 in.open(SourceFile,ios::binary);//開啟源檔案 6 if(in.fail())//開啟源檔案失敗 7 { 8 cout<<"Error 1: Fail to open the source file."<<endl; 9 in.close();10 out.close();11 return 0;12 }13 out.open(NewFile,ios::binary);//建立目標檔案 14 if(out.fail())//建立檔案失敗15 {16 cout<<"Error 2: Fail to create the new file."<<endl;17 out.close();18 in.close();19 return 0;20 }21 else//複製檔案22 {23 out<<in.rdbuf();24 out.close();25 in.close();26 return 1;27 }28 }
或
linux c++ 拷貝檔案問題
自動包括子目錄;
通過命令列參數完成<[源路徑]源檔案><目的路徑>
要求源檔案名稱支援萬用字元‘*’,例如:*.zip或*.rar,支援上述兩種格式即可;
#include <stdlib.h>
#include <string.h>
#include <io.h>
#include <stdio.h>
#include <iostream>
#include <windows.h>
1 /********************************************************************* 2 功能:複製檔案 3 參數:pSrc,原檔案名稱 4 pDes,目標檔案名 5 返回:<0,失敗 6 >0,成功 7 8 *********************************************************************/ 9 #define BUF_SIZE 25610 int copyFile(const char * pSrc,const char *pDes)11 {12 FILE *in_file, *out_file;13 char data[BUF_SIZE];14 size_t bytes_in, bytes_out;15 long len = 0;16 if ( (in_file = fopen(pSrc, "rb")) == NULL )17 {18 perror(pSrc);19 return -2;20 }21 if ( (out_file = fopen(pDes, "wb")) == NULL )22 {23 perror(pDes);24 return -3;25 }26 while ( (bytes_in = fread(data, 1, BUF_SIZE, in_file)) > 0 )27 {28 bytes_out = fwrite(data, 1, bytes_in, out_file);29 if ( bytes_in != bytes_out )30 {31 perror("Fatal write error.\n");32 return -4;33 }34 len += bytes_out;35 printf("copying file .... %d bytes copy\n", len);36 }37 fclose(in_file);38 fclose(out_file);39 return 1;40 }41 42 /*********************************************************************43 功能:複製(非空)目錄44 參數:pSrc,原目錄名45 pDes,目標目錄名46 返回:<0,失敗47 >0,成功48 49 *********************************************************************/50 int copyDir(const char * pSrc,const char *pDes)51 {52 if (NULL == pSrc || NULL == pDes) return -1;53 mkdir(pDes);54 char dir[MAX_PATH] = {0};55 char srcFileName[MAX_PATH] = {0};56 char desFileName[MAX_PATH] = {0};57 char *str = "\\*.*";58 strcpy(dir,pSrc);59 strcat(dir,str);60 //首先尋找dir中符合要求的檔案61 long hFile;62 _finddata_t fileinfo;63 if ((hFile = _findfirst(dir,&fileinfo)) != -1)64 {65 do66 {67 strcpy(srcFileName,pSrc);68 strcat(srcFileName,"\\");69 strcat(srcFileName,fileinfo.name);70 strcpy(desFileName,pDes);71 strcat(desFileName,"\\");72 strcat(desFileName,fileinfo.name);73 //檢查是不是目錄74 //如果不是目錄,則進行處理檔案夾下面的檔案75 if (!(fileinfo.attrib & _A_SUBDIR))76 {77 copyFile(srcFileName,desFileName);78 }79 else//處理目錄,遞迴調用80 {81 if ( strcmp(fileinfo.name, "." ) != 0 && strcmp(fileinfo.name, ".." ) != 0 )82 {83 copyDir(srcFileName,desFileName);84 }85 }86 } while (_findnext(hFile,&fileinfo) == 0);87 _findclose(hFile);88 return 1;89 }90 return -3;91 }
View Code
windows 與linux 下用C++讀取sqlite實現檔案複製(三)