Pregunta

Estoy usando la función MFC CFile Seek. Tengo un problema acerca de Buscar fuera de la longitud del archivo.

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: Observaciones

  

La función de búsqueda permite aleatorio   acceso al contenido de un archivo moviendo   el puntero una cantidad especificada,   absoluta o relativamente No hay datos   En realidad leer durante la búsqueda. Si el   la posición solicitada es mayor que la   tamaño del archivo, la longitud del archivo   extenderse a esa posición, y no   se lanzará una excepción.

Según MSDN, la longitud del archivo se ampliará. Sin embargo, después de cfile.Close () , el archivo permanece igual. ¿Por qué? ¡Muchas gracias!

¿Fue útil?

Solución

Creo que MSDN expresó mal el asunto ligeramente. Cuando llama a Seek, el puntero del archivo se ajusta, pero el archivo real en el disco aún no cambia. Si llama a Escribir después de eso, el archivo real se convertirá en un archivo disperso (en NTFS) o en un archivo más largo (en FAT), con la longitud esperada.

Parece que no hay reglas definidas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top