¿Cómo asegurarse de que un archivo esté escrito correctamente para el sistema de archivos?

StackOverflow https://stackoverflow.com/questions/14726901

  •  07-03-2022
  •  | 
  •  

Pregunta

I Hava una aplicación que lee un archivo desde un archivo ZIP y lo guarda para archivar el sistema de archivos. Después de escribirlo para archivar el sistema, inicio Inicio inmediatamente para leer este archivo con un lector SAX2. En los archivos más grandes (más de 300 MB), a veces ocurre, que SAX2 deja de analizar debido a una etiqueta no cerrada. Pero cuando reviso el archivo (o incluso intente leerlo nuevamente más tarde) funciona, por lo que el archivo lo mismo, está bien.

FZipKit.ExtractToStream(LFileName, LStream);
LStream.SaveToFile(OutputFilename);
SAX2.processUrl(OutputFilename);

Mi suposición es, que el archivo aún no estaba completamente escrito en el sistema de archivos cuando comencé el proceso de análisis.

¿Hay alguna manera de garantizar que el archivo fue escrito o el vapor se haya enjuagado al sistema de archivos?

gracias

¿Fue útil?

Solución

En primer lugar, voy a suponer que el analizador XML opera correctamente. Si es incapaz de leer archivos, bueno, la solución es obvia.

Lo que nos lleva a ver cómo se crea el archivo. Cuando llame a SavetoFile, el archivo está abierto, escrito, cerrado y los buffers están enrojecidos. En un sistema de vainilla simple, su analizador XML verá todo el contenido del archivo. La única conclusión es que algo está interfiriendo. El sospechoso más como el sospechoso es su escáner de virus. Muchos escáneres, incluso los más respetados, no pueden manejar adecuadamente un archivo que se está cerrando y luego re-abrirse inmediatamente.

La conclusión es que su código está bien y el problema casi seguramente se encuentra con su entorno local.

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