Вопрос о CFile Seek - PullRequest
       24

Вопрос о CFile Seek

0 голосов
/ 15 сентября 2009

Я использую функцию поиска 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: Примечания

Функция поиска позволяет случайным образом доступ к содержимому файла путем перемещения указатель указанной суммы, абсолютно или относительно. Нет данных на самом деле читать во время поиска. Если запрашиваемая позиция больше, чем размер файла, длина файла будет быть продлен до этой позиции, и нет будет сгенерировано исключение.

Согласно MSDN, длина файла будет увеличена. Однако после cfile.Close() файл остается прежним. Почему? Большое спасибо!

1 Ответ

1 голос
/ 15 сентября 2009

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

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

...