Pregunta sobre CFile Seek
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!
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.