Use CMemFile to store temp descripfile

CMemFile 就是取出一塊記憶體,讓你當成檔案類型來操作

他的出現就是為了解決磁碟讀寫上的速度瓶頸,以及讓你寫入一些比較機密的資料

這次在專題中需要實作的就是檔案是否修改的提示功能

 

設計思路是先將磁碟上的 Description File 讀取到記憶體當中

接著若 IDE 的 Project Manager 發生甚麼修改就再寫一份新的

透過比較前後檔案的不同來判斷使用者是否做出修改

好處是就算使用者修改後又改回原設定,還是可以做出正確的判斷

下面就先介紹 CMemFile 要怎麼實作

 

[實作過程]

// Read DescripFile into buffer
CFile file;
file.Open("ReadMe.txt",CFile::modeRead,NULL);
BYTE bufferNew* = (BYTE*)malloc(file.GetLength());
file.Read(bufferNew,file.GetLength());
file.Close();

// Attatch buffer to CMemFile
CMemFile memDescripFileNew;
memDescripFileNew.Attach(bufferOld,file.GetLength(),1024);
memDescripFileNew.SetLength(file.GetLength());

// Write string to CMemFile
CString as_tokens = "Test String";
memDescripFileNew.Seek(0,CFile::begin); // Set the pos to write
memDescripFileNew.Write(as_tokens,as_tokens.GetLength()*sizeof(TCHAR));
 
// Restore back to disk file
CFile file;	
file.Open("ReadMe.txt",CFile::modeCreate|CFile::modeWrite,NULL);
int size = memDescripFileNew.GetLength();
BYTE *pMem = memDescripFileNew.Detach();
file.Write(pMem,size);
file.Close();

這樣就完成一次 CMemFile 的讀寫了:)

 

[參考資料]

1. MFC类库学习——CMemFile的学习

2. Saving the contents of CMemFile to hard disk?