您的位置:首页 > 其它

常见的实现文件拷贝的两种方法

2015-06-04 22:30 197 查看
#include <iostream>

#include <fstream>

#include <ctime>

using namespace std;

int main(int argc, char** argv)

{

ifstream infile("D:\\soft\\Windows 7 Ultimate x86.iso", ios::in|ios::binary);

ofstream outfile("F:\\soft\\Windows 7 Ultimate x86.iso", ios::out|ios::binary);

if(argc<3)

{

cerr<<"命令错误!"<<endl;

return -1;

}

// ifstream infile(argv[1], ios::in | ios::binary);

// ofstream outfile(argv[2], ios::out | ios::binary);

if(!infile)

{

cerr<<"文件打开失败!"<<endl;

return -1;

}

time_t t1, t2;

char szBuff[1025];

time(&t1);

while(!infile.eof())

{

infile.read(szBuff, sizeof(szBuff));

outfile.write(szBuff, infile.gcount() );

}

int iFilesize=0;

infile.seekg(0, ios::end);

iFilesize=infile.tellg();

infile.seekg(0);

cout<<iFilesize<<endl;

infile.close();

outfile.close();

time(&t2);

// cout<<"文件拷贝成功!"<<endl;

cout<<"拷贝用时:"<<t2-t1<<endl;

return 0;

}

/*

//Winows实现文件的拷贝,

/*参数lpSrcFile 文件路径1

参数lpDesFile 文件路径2

*/

BOOL DJCopyFile(LPCTSTR lpSrcFile,LPCTSTR lpDesFile)

{

HANDLE hSrcFile=CreateFile(lpSrcFile,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

HANDLE hDesFile=CreateFile(lpDesFile,GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

if(hSrcFile==INVALID_HANDLE_VALUE || hDesFile==INVALID_HANDLE_VALUE) return FALSE;

char szBuff[1024];

DWORD dwBytesRead;

DWORD dwBytesWritten;

while(ReadFile(hSrcFile,szBuff,sizeof(szBuff),&dwBytesRead,NULL) && dwBytesRead!=0)

{

WriteFile(hDesFile,szBuff,dwBytesRead,&dwBytesWritten,NULL);

}

CloseHandle(hSrcFile);

CloseHandle(hDesFile);

return TRUE;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: