64,648
社区成员
发帖
与我相关
我的任务
分享
void CopyData(char *pData,int nLen)
{
fstream iFile("F:\\result.exe",ios::out|ios::binary|ios::app);
if(iFile.is_open())
{
iFile.write(pData,nLen);
}
else
{
cout<<"error 002"<<endl;//经常会打开失败,返回错误吗32 说文件被占用了
DWORD dwError=GetLastError();
cout<<dwError;
}
iFile.flush();
iFile.close();
}
void MyWriteFile(char *pStrPath)
{
fstream fFile(pStrPath,ios::in|ios::binary);
if (fFile.is_open())
{
while(fFile.eof()==false)
{
char szBuf[10]={0};//这里如果读取的字节数比较大问题出现概率就低
fFile.read(szBuf,10);
streamsize nSize= fFile.gcount();
CopyData(szBuf,static_cast<int>(nSize));
}
}
else
{
cout<<"error 001"<<endl;
DWORD dwError=GetLastError();
cout<<dwError;
}
fFile.flush();
fFile.close();
}
void main()
{
DeleteFile("F:\\result.exe");
MyWriteFile("C:\\MapFE.exe");
}
void CopyData(fstream& fs,char *pData,int nLen)
{
fs.write(pData,nLen);
fs.flush();
}
然后在MyWriteFile()函数中只需要打开一次F:\\result.exe即可
void MyWriteFile(char *pStrPath)
{
fstream inFile(pStrPath,ios::in|ios::binary);
fstream outFile("D:\\test1.exe",ios::out|ios::binary);
if (inFile.is_open()&&outFile.is_open())
{
while(inFile.eof()==false)
{
char szBuf[10]={0};
inFile.read(szBuf,10);
streamsize nSize= inFile.gcount();
CopyData(outFile,szBuf,static_cast<int>(nSize));
}
}
else
{
cout<<"error 001"<<endl;
DWORD dwError=GetLastError();
cout<<dwError;
}
inFile.close();
outFile.close();
}