문제
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()
, 파일은 동일하게 유지됩니다. 왜? 많은 감사합니다!
해결책
MSDN이 문제를 약간 잘못 잘못했다고 생각합니다. 호출을 호출 할 때 파일 포인터가 조정되지만 디스크의 실제 파일은 아직 변경되지 않습니다. 그 후 쓰기를 호출하면 실제 파일은 예상 길이가있는 희소 파일 (NTFS) 또는 더 긴 파일 (FAT)이됩니다.
명확한 규칙이없는 것 같습니다.
제휴하지 않습니다 StackOverflow