常见的实现文件拷贝的两种方法
2015-06-04 22:30
260 查看
#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;
}
#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;
}
相关文章推荐
- Lucene的索引文件格式
- java实验三
- java对文件的一行行写入,一行读取
- android不为人知的工具集合
- 如何加快Android Studio的编译速度
- Java for LeetCode 148 Sort List
- iOS-学习笔记-UI-第三天
- lightOJ 1030(期望)
- 常见的交换变量的三种方法
- git学习
- LeetCode——Longest Substring Without Repeating Characters
- C++封装DLL的方法
- 浏览器市场占有率
- 使用Unity遇到的若干个坑
- PHP爬虫技术(一)
- Eclipse背景颜色修改
- IOS-MJExtension一句话搞定对象归档
- 最常用的动态sql语句梳理Mybatis(转)
- android利用WebSocket实现消息推送
- 简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别