2012-05-04 19 views
7

¿Es posible acceder a un archivo antes de que se elimine al usar el evento FileSystemWatcher.OnDeleted?Acceder al archivo antes de eliminarlo

Estoy almacenando algunos datos sobre el documento en sí en sus metadatos y necesito esa información antes de que se elimine.

¿Alguna idea de cómo lograr esto con o sin FileSystemWatcher si es posible?

Actualización: //

me di cuenta de que el almacenamiento de los datos en el archivo es mala ya que no puedo acceder a él cuando se elimina el archivo.

Solución: reescribir mi aplicación para almacenar los datos en una base de datos local (sqlite/xml o algo así) como consiga la ruta completa y el nombre cuando se crea el archivo/renombra/modificado/borrado que lo haría será más fácil actualizar el registro de la base de datos para el archivo.

¡Gracias a todos por las ideas y sugerencias!

+0

Casi quiero decir que no, no puede porque el evento se dispara una vez que se ha eliminado el archivo. No creo que el FSW pueda conocer el evento hasta después de que se haya completado, ya que eso significaría que un pre-delete incluso tendría que ser disparado y capturado, y luego permitiría que usted cree un bloqueo en el archivo. –

+0

No creo que sea posible con 'FileSystemWatcher'. No estoy seguro de si Windows permite un enlace de nivel inferior (aunque lo dudo). – dlev

+0

Obtendrá el nombre completo del controlador de eventos. Úselo para restaurar el archivo, hacerlo invisible, leerlo y eliminarlo. hackish y no infalible, pero aún algo: http://stackoverflow.com/questions/2837307/recovering-deleted-file-on-windows – nawfal

Respuesta

2

¿Es posible acceder a un archivo antes de que se elimine al usar Evento FileSystemWatcher.OnDeleted?

El evento se desencadena después de la eliminación del archivo no antes, por lo que no podrá acceder al archivo cuando se produzca este evento.

¿Alguna idea de cómo lograr esto si es posible?

En su lugar usaría el evento OnChanged, que se activará cada vez que cambie el archivo. Básicamente, lee los metadatos del archivo cada vez que cambia el archivo. Esto puede ser un poco engorroso si el archivo se actualiza con mucha frecuencia, pero debería permitirle tener los metadatos más recientes antes de que se elimine el archivo.

+0

¡OnChanged no tiene que activarse necesariamente antes de OnDelete! – nawfal

+0

también no hay garantía de que el archivo será cambiado antes de ser eliminado. – Aviatrix

+0

@nawfal Consulte mi actualización – GETah

0
FileSystemWatcher1 = Your Main Watcher. 
FileSystemWatcher2 = RecycleBin Watcher 

If the FileSystemWatcher1 Deleted file == the FileSystemWatcher2 Created File 
{ 
    //Do what you want with the FileSystemWatcher2.FullPath 
} 
Cuestiones relacionadas