void CBdCoreApp::PickTo(CFile* file, ULONGLONG DataLen, CString NewFileName)
{
BYTE pBuf[BufLen];
UINT WriLen;
CFile nf(NewFileName,CFile::modeCreate|CFile::modeWrite);
nf.SeekToBegin();
for(int i=0;i<DataLen;i+=BufLen)
{
WriLen=file->Read(&pBuf,BufLen);
file->Seek(WriLen,CFile::current);
nf.Write(&pBuf,WriLen);
nf.SeekToEnd();
}
nf.Close();
}ULONGLONG CMyDlg::PickFrom(CFile* file, CString PushFileName)
{
BYTE pBuf[BufLen];
UINT WriLen;
ULONGLONG DataLen;
CFile pf(PushFileName,CFile::modeRead);
DataLen=pf.GetLength();
pf.SeekToBegin();
for(int i=0;i<DataLen;i+=BufLen)
{
WriLen=pf.Read(&pBuf,BufLen);
pf.Seek(WriLen,CFile::current);
file->Write(&pBuf,WriLen);
file->SeekToEnd();
}
pf.Close();
return DataLen;
}调试中发现,读到文件的四分之三左右时WriLen变0。几十K的文件读写都会漏包,不知道是什么问题,求教各位,谢谢。
{
BYTE pBuf[BufLen];
UINT WriLen;
CFile nf(NewFileName,CFile::modeCreate|CFile::modeWrite);
nf.SeekToBegin();
for(int i=0;i<DataLen;i+=BufLen)
{
WriLen=file->Read(&pBuf,BufLen);
file->Seek(WriLen,CFile::current);
nf.Write(&pBuf,WriLen);
nf.SeekToEnd();
}
nf.Close();
}ULONGLONG CMyDlg::PickFrom(CFile* file, CString PushFileName)
{
BYTE pBuf[BufLen];
UINT WriLen;
ULONGLONG DataLen;
CFile pf(PushFileName,CFile::modeRead);
DataLen=pf.GetLength();
pf.SeekToBegin();
for(int i=0;i<DataLen;i+=BufLen)
{
WriLen=pf.Read(&pBuf,BufLen);
pf.Seek(WriLen,CFile::current);
file->Write(&pBuf,WriLen);
file->SeekToEnd();
}
pf.Close();
return DataLen;
}调试中发现,读到文件的四分之三左右时WriLen变0。几十K的文件读写都会漏包,不知道是什么问题,求教各位,谢谢。
我不清楚读写文件POS会自动跳,所以一直这样用,谢谢。
怎么PickFrom和PickTo里都有读写操作?你的需求是什么?
确实是这个问题 还有一个是要用TypeBinary来打开。谢谢