2009-09-15 2 views
0

Я использую функцию поиска CFFC CFile. У меня проблема с поиском длины файла.Вопрос о 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: Замечание

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

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

ответ

1

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

Не существует определенных правил.

+0

Большое спасибо! я вижу – user25749