2009-09-15 48 views
0

的問題我正在使用MFC CFile Seek函數。 我有一個關於尋找文件長度的問題。關於CFile Seek

CFile cfile; 
BOOL bResult = cfile.Open(
L"C:\\2.TXT", 
CFile::modeReadWrite | 
CFile::modeCreate | 
CFile::modeNoTruncate | 
CFile::typeBinary | 
CFile::shareDenyNone); 

cfile.Seek(10000, CFile::End); 
cfile.Close(); 

MSDN: 備註

Seek函數通過移動 指針指定金額, 絕對或相對允許隨機 訪問文件的內容。在搜尋期間沒有數據是實際讀取的 。如果 請求的位置大於該文件的大小 ,文件長度將 擴展到該位置,並且不會拋出異常。

根據MSDN,文件長度將被擴展。 然而,在cfile.Close()之後,文件保持不變。 爲什麼?非常感謝!

回答

1

我認爲MSDN稍微錯報了此事。當你調用Seek時,文件指針被調整,但是磁盤上的實際文件沒有改變。如果在此之後調用Write,則實際文件將變爲稀疏文件(在NTFS上)或較長文件(在FAT上),並具有預期的長度。

似乎沒有任何明確的規則。

+0

非常感謝!我懂了 – user25749 2009-09-15 07:24:05