从CMemFile函数学习数据处理
发布时间:2020-12-14 03:38:30 所属栏目:大数据 来源:网络整理
导读:CMemFile函数最一般的用途是创建CMemFile对象,并通过调用CFile成员函数来使用它。值得注意的是当创建CMemFile后将自动得打开它:不要调用仅仅用于磁盘文件的CFile::Open函数,其原因在于没有使用数据成员CFile::m_hFile。 内存映射文件是为了解决磁盘的读写
CMemFile函数最一般的用途是创建CMemFile对象,并通过调用CFile成员函数来使用它。值得注意的是当创建CMemFile后将自动得打开它:不要调用仅仅用于磁盘文件的CFile::Open函数,其原因在于没有使用数据成员CFile::m_hFile。 内存映射文件是为了解决磁盘的读写瓶颈(I/O)。 内存文件CMemFile则可以用在一些绝密的场合。 很多时候,程序会产生一些临时文件,而这些临时文件又涉及到一些绝密的数据信息,这时候,一般有这几种解决方法:加密之后再保存到磁盘中;直接解到内存中。 CMemFile类可以把这些绝密数据解密到内存中,并当作文件来处理。 解压到磁盘的缺点:任何文件,只要写入到磁盘,一般的删除方法都无法彻底删除这些数据,因为,磁介质的信号是无法一次性清除的。而内存则不同,只要断电,内存的数据就会马上丢失。 //C++ LPCTSTR lpszString = "ABCDEFGHIJKLMN "; //要写入文件的数据 //定义一个CMemFile对象,该对象并不对应磁盘文件,而是一块内存 CMemFile file; file.Write(lpszString,lstrlen(lpszString)); //写 file.SeekToBegin(); //把文件指针移动到文件开头 TCHAR lpszBuf[255] = {0}; file.Read(lpszBuf,255); AfxMessageBox(lpszBuf); //把读出的内容显示出来//C++ void CCMemFile1Dlg::OnOk2() { // TODO: Add your control notification handler code here //打开一个文件,读入 内存buffer中 CFile file; file.Open( "ReadMe.txt",CFile::modeReadWrite,NULL); BYTE* buffer=(BYTE*) malloc(file.GetLength()); file.Read(buffer,file.GetLength()); //将buffer与 memfile关联起来 CMemFile memfile; memfile.Attach(buffer,file.GetLength(),1024); memfile.SetLength(file.GetLength()); //将头200 的数据 加入的末尾,重复100次 byte tempbuffer[200]; for(int i=0;i <100;i++) { memfile.Seek(0,CFile::begin); memfile.Read(tempbuffer,200); memfile.Seek(0,CFile::end); memfile.Write(tempbuffer,200); } // test over //存回文件 int size=memfile.GetLength(); memfile.Detach(); file.Seek(0,CFile::begin); file.Write(buffer,size); file.Close(); free(buffer); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |