Pergunta Sobre CFile Buscai
Pergunta
Eu estou usando MFC CFile função Seek. Eu tenho um problema sobre Buscai no tamanho do arquivo.
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: Observações
A função Busca permite aleatório acesso ao conteúdo de um arquivo movendo o ponteiro de uma quantidade especificada, absolutamente ou relativamente. Não existem dados realmente ler durante a procura. Se o posição requerida é maior do que o tamanho do arquivo, o tamanho do arquivo será ser estendido para essa posição, e nenhuma exceção será lançada.
De acordo com MSDN, o tamanho do arquivo será estendido.
No entanto, após cfile.Close()
, o arquivo permanece o mesmo.
Por quê? Muito obrigado!
Solução
Eu acho MSDN misstated o assunto ligeiramente. Quando você chama Procure o ponteiro do arquivo é ajustado, mas o arquivo real no disco não muda ainda. Se você chamar Write depois disso, então o arquivo real se tornará um arquivo esparso (em NTFS) ou um arquivo de mais longo (em FAT), com o comprimento esperado.
Há não parecem ser quaisquer regras definidas.