Вопрос о CFile Seek

Я использую функцию поиска MFC CFile. У меня проблема с поиском вне длины файла.

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) с ожидаемой длиной.

Кажется, нет никаких определенных правил.

Другие вопросы по тегам