java - todos - ¿Cómo verificar si puedo eliminar un archivo?
file.delete java no elimina (2)
¿Cómo puedo verificar que puedo eliminar un archivo en Java?
Por ejemplo, debería poder eliminar el archivo C:/file.txt
pero nunca podré eliminar C:/
o Computer
, ni My Documents
etc.
La solución descrita en posible duplicado no funciona para mí.
La eliminación del archivo requiere un permiso de escritura del elemento principal del archivo, es decir, el directorio donde se almacena el archivo. El directorio en Java también está representado por una instancia de la clase java.io.File
que tiene el método canWrite()
.
Por lo tanto, para verificar si el archivo puede eliminarse, debe llamar a file.getParent().canWrite()
.
En mi caja de Windows 7 de 64 bits con NTFS y Java 7 (Oracle JDK), lo único que funcionó para mí de manera confiable es
boolean canDelete = file.renameTo(file)
Esto es sorprendentemente simple y funciona también para las carpetas, que tienen "en algún lugar debajo" de un archivo "abierto" o "bloqueado".
Otras cosas que intenté y produje falsos positivos: adquirir FileLock, File # canWrite, File # setLastModified ("touch"), file.getParent (). CanWrite ()