Perdida de ficheros por apagón.

14/01/2004 - 09:44 por Joaquín López | Informe spam
Estoy realizando una aplicación con Visual Basic .NET.
Lo que hago es abrir dos ficheros, grabar y cerrarlos.
Un fichero lo trabajo con el StreamWriter, haciendo un
flush despues de cerrarlo y el otro con el FileOpen. Pero
con los dos ficheros me ocurre lo mismo, si no descargo el
programa puedo comprobar con el explorado de windows que
los dos ficheros existen, luego le corto el suministro
electrico simulando un apagón y al reiniciar los dos
ficheros han desaparecido.
Tambien he desmarcado la opción en directivas del disco
duro de "Habilitar caché de escritura en disco".
Gracias y un saludo.
 

Leer las respuestas

#1 Fran Arreciado [MS]
15/01/2004 - 17:10 | Informe spam
Joaquin, siempre que escribimos un archivo a disco, aunque tu le des al
boton Salvar en la herramienta (Notepad, Word, ...) realmente le estamos
pasando la peticion al sistema operativo, que lo hará inmediantamente...o no
!

Puedes hacer la prueba escribiendo algo en notepad y salvando a disco .
quita el cable al PC y verás, al arrancar, que el archivo no está. Procesos
como LogOff o Shutdown si se encargan de que las escrituras pendientes se
realicen antes del apagado.

Si tu vuelves a abrir el archivo, el sistema operativo, antes de abrirlo,
chequea si existe una operacion de escritura pendiente, y si es asi, se
actualiza.

Con todo esto, lo que te falta en tu codigo es una llamada al API
FlushFileBuffers para forzar que la escritura es efectiva. Mas detalles en

165942 HOWTO: Write Data to a File Using WriteFile API
http://support.microsoft.com/?id5942

'Flush the file buffers to force writing of the data.
fSuccess = FlushFileBuffers(fHandle)

Si tienes problemas con esto avisa.
Un saludo,
Fran

Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no
otorga ningún derecho


"Joaquín López" wrote in message
news:08fa01c3da7a$acc1e780$
Estoy realizando una aplicación con Visual Basic .NET.
Lo que hago es abrir dos ficheros, grabar y cerrarlos.
Un fichero lo trabajo con el StreamWriter, haciendo un
flush despues de cerrarlo y el otro con el FileOpen. Pero
con los dos ficheros me ocurre lo mismo, si no descargo el
programa puedo comprobar con el explorado de windows que
los dos ficheros existen, luego le corto el suministro
electrico simulando un apagón y al reiniciar los dos
ficheros han desaparecido.
Tambien he desmarcado la opción en directivas del disco
duro de "Habilitar caché de escritura en disco".
Gracias y un saludo.

Preguntas similares