2011-09-22 21 views
10

Si llamo a uno de los métodos File.mkdir() o File.mkdirs() en Java, y devuelve false, ¿hay alguna manera de saber por qué no se creó el directorio?Descubriendo el motivo de la falla File.mkdirs()

+2

Siempre me he preguntado por qué 'mkdir()' se diseñó de la forma en que lo hizo (aunque nunca fue un problema para mí). – NPE

+1

Lo mismo con 'delete()', simplemente devuelve un booleano. No hay indicación de por qué algo falló si no es una 'SecurityException'. –

Respuesta

4

No realmente, no. Si NO se genera un SecurityException, la causa más probable es un error ortográfico en la ruta, lo que significa que accidentalmente ha especificado una ruta principal para los nuevos directorios que de alguna manera no es válida.

No suponga que tiene envuelto en un bloque try { ... } catch (Exception e), en el que no se da cuenta de un SecurityException está siendo lanzado, porque vas a tomar un antepasado de SecurityException, ¿verdad?

Si cree firmemente que todo parece correcto, y todavía falla, supongo que podría ponerlo en un bucle para volverlo a intentar, por ejemplo, tres veces. Si aún falla, y dependiendo de su aplicación, puede generar algún tipo de alerta en el nivel de la interfaz de usuario o registrar el error en un archivo de registro (suponiendo que puede escribir en él).

Supongo que es posible que algún problema de E/S más profundo impida que funcione, pero más allá de simplemente notificar al usuario de una falla, no hay mucho que pueda (o deba) hacer a nivel de aplicación. Si hay algo más profundo en la E/S mal, es más probable que sea un problema con el sistema/hardware/SO, o algo completamente inseguro sobre el que no tiene control, como un crash de subsistema/servicio.

... y si eso está sucediendo, esa es la responsabilidad del técnico de TI para corregir, no su aplicación. A menos que, por supuesto, su aplicación esté causando el colapso de alguna manera.

+2

No, ese no era el caso. Descubrí el problema (el directorio principal tenía un propietario incorrecto en un nodo de un clúster) pero me requirió ir a otro piso, hablar con el administrador de la red, pedirle a alguien que me diera una sesión ssh y, finalmente, escribir ' mkdir my/faulty/path'. Esperaba una forma más práctica de hacerlo ... – brandizzi

+0

Bueno, ahí tienes - Problema de los informáticos. :) – jefflunt

+1

Jaja, seguro :) pero Java tampoco fue útil ... – brandizzi

Cuestiones relacionadas