Estoy usando FileWriter para escribir en un archivo y noté que incluso después de haber eliminado el archivo (fuera de proceso) el FileWriter no lanza ninguna excepción.Java escribiendo en un archivo eliminado
¿Es esto normal?
Estoy usando FileWriter para escribir en un archivo y noté que incluso después de haber eliminado el archivo (fuera de proceso) el FileWriter no lanza ninguna excepción.Java escribiendo en un archivo eliminado
¿Es esto normal?
Esto depende de su sistema operativo:
Sí, es normal. Usando la mayoría de las formas convencionales de hacer E/S, si el archivo no existe, lo crea para usted. Esto, por supuesto, pendiente de que lo haya borrado antes de que comenzó a escribir en él.
Un archivo puede aparecer en más de un lugar (con enlaces duros) Eliminar un archivo elimina uno de los enlaces duros (posiblemente el único) Si hay un enlace en otro lugar, el archivo sigue estando accesible.
Los archivos que se eliminan, pero abiertos, siguen ocupando espacio en el disco y, si son lo suficientemente grandes, pueden significar espacio y el tamaño de todos los archivos que puede encontrar en el disco es diferente.
BTW: Usted puede leer/escribir el contenido de un archivo abierto (suprimido o no) si nos fijamos en /proc/{pid}/fd/{fid}
¿Qué sistema operativo es esto? Por ejemplo, en Linux, hacer 'rm' solo desasocia el archivo de su ruta, y solo cuando se eliminen todos los identificadores del archivo se eliminará (puede recuperarse fácilmente si todavía está abierto). –