某些文件输入输出类将文件读写 Cache 在内存,并没有真实的写入到磁盘上面。 因此需要调用 CFile::Flush() 函数执行刷新功能。CFile::Flush virtual void Flush( ); throw( CFileException );ResForces any data remaining in the file buffer to be written to the file. The use of Flush does not guarantee flushing of CArchive buffers. If you are using an archive, call CArchive::Flush first.ExampleSee the example for CFile::SetFilePath.CFile Overview | Class Members | Hierarchy Chart -------------------------------------------------------------------------------- Send feedback to MSDN.Look here for MSDN Online resources.
楼上这位兄弟能详细点吗?
因此需要调用 CFile::Flush() 函数执行刷新功能。CFile::Flush
virtual void Flush( );
throw( CFileException );ResForces any data remaining in the file buffer to be written to the file. The use of Flush does not guarantee flushing of CArchive buffers. If you are using an archive, call CArchive::Flush first.ExampleSee the example for CFile::SetFilePath.CFile Overview | Class Members | Hierarchy Chart
--------------------------------------------------------------------------------
Send feedback to MSDN.Look here for MSDN Online resources.
void CMainFrame::SendFile(LPCTSTR srcFile,LPCTSTR destFile)
{
CFile src,dest;
BY_HANDLE_FILE_INFORMATION srcFileInformation;
src.Open(srcFile,CFile::modeRead|CFile::shareDenyNone|CFile::typeBinary);
dest.Open(destFile,CFile::modeReadWrite|CFile::shareDenyNone|CFile::typeBinary|CFile::modeCreate|CFile::modeNoTruncate);
GetFileInformationByHandle((HANDLE)src.m_hFile,&srcFileInformation); src.SeekToBegin();
dest.SeekToBegin(); UINT dwRead=0;
while(dwRead<srcFileInformation.nFileSizeLow)
{
byte* data=new byte[1024];
memset(data,0,1024); UINT dw=src.Read(data,1024);
dest.Write(data,dw);
dwRead+=dw;
} src.Close();
dest.Close();
}
能帮我说说如果没锁会发生什么情况吗?
在访问文件前锁住这个对象,访问完成后解锁这个对象。如果文件复制仍然出现你所说的问题,则该寻找其它原因。
但是另一个程序不是我写的啊,能帮我介绍一份相关的资料或书吗?