Вопрос

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

Это было полезно?

Решение

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

Похоже, здесь нет никаких определенных правил.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top