Вопрос о CFile Seek

Я использую функцию MFC 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() файл остается прежним. Почему? Большое спасибо!


person user25749    schedule 15.09.2009    source источник


Ответы (1)


Я думаю, что MSDN немного исказила вопрос. Когда вы вызываете Seek, указатель файла корректируется, но фактический файл на диске еще не изменяется. Если вы вызовете Write после этого, то фактический файл станет разреженным файлом (в NTFS) или более длинным файлом (в FAT) с ожидаемой длиной.

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

person Windows programmer    schedule 15.09.2009