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的文件读写都会漏包,不知道是什么问题,求教各位,谢谢。

解决方案 »

  1.   

    奇怪,都是顺序读写,为什么不停地seek呢?
      

  2.   

    奇怪,都是顺序读写,为什么不停地seek呢?
      

  3.   

    奇怪,都是顺序读写,为什么不停地seek呢?
      

  4.   


    我不清楚读写文件POS会自动跳,所以一直这样用,谢谢。
      

  5.   

    看不懂。
    怎么PickFrom和PickTo里都有读写操作?你的需求是什么?
      

  6.   

    如果写完需要马上读,那么使用Flush() ;
      

  7.   


    确实是这个问题 还有一个是要用TypeBinary来打开。谢谢