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!

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top