Nuestro programa java escribe algunos datos importantes en un archivo continuamente. Ahora queremos arrojar alguna excepción o mostrar algún tipo de mensaje de error en la consola cuando el usuario borre el archivo (al que está escribiendo el programa java).Java: cómo detectar la eliminación de archivos mientras se escribe en un archivo?
me encontré con que java no lanza ninguna excepción cuando se intenta escribir en un archivo que se ha suprimido.
Método I - Comience un nuevo hilo que seguirá comprobando si el archivo está allí y notificará al programa principal de Java cuando se haya eliminado el archivo. Esto no funcionará en nuestro caso, ya que tendremos varios archivos en los que se escribirá el programa java, por lo que iniciar un nuevo hilo para cada archivo no será eficiente desde el punto de vista de la memoria.
Método II - comprobar la existencia del archivo cada vez justo antes de escribir en el archivo. Tampoco es un buen enfoque porque verificar la existencia del archivo es una operación más costosa.
Método III - Extender java.io.FilterWriter (que estamos utilizando para escribir en un archivo) y anular escritura() método para lanzar una excepción cuando se intenta escribir en un archivo que ha sido borrado Esta parece ser una buena solución, pero no pude encontrar ningún lugar donde Java esté digiriendo alguna excepción (cuando intenta escribir en un archivo que ha sido eliminado) que podemos arrojar al anular ese método.
¿Es esto Windows o Unix? ¿Estás cerrando el archivo después de cada escritura, o dejándolo abierto todo el tiempo que estás corriendo? – Gabe
@Gabe Es Unix. En Windows, no puede eliminar un archivo si lo está utilizando algún proceso. –
En Unix no hay manera de saber que un archivo que tiene abierto ha sido eliminado, por lo que no hay forma de que Java (o cualquier otro idioma) arroje una excepción cuando eso suceda. – Gabe