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()
Respuesta
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.
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
Bueno, ahí tienes - Problema de los informáticos. :) – jefflunt
Jaja, seguro :) pero Java tampoco fue útil ... – brandizzi
- 1. Descubriendo el origen de la excepción nsrange
- 2. Descubriendo la versión de Dojo
- 3. ¿Cómo encontrar un motivo cuando mkdir falla en PHP?
- 4. Detectando el motivo de la falla al abrir un flujo cuando fail() es verdadero
- 5. Descubriendo tipos derivados utilizando la reflexión
- 6. Determine el motivo de System.AccessViolationException
- 7. Motivo de saltarse el AOT?
- 8. Descubriendo referers al objeto SQLAlchemy
- 9. Descubriendo qué control tiene foco
- 10. Descubriendo otros objetos mientras hago TDD
- 11. Cuál es el motivo de "FimgApiStretch: stretch failed" en Android
- 12. Descubriendo lisp-family language Implementaciones de .NET
- 13. Descubriendo si la actividad de Android se está ejecutando
- 14. Cómo dar salida al motivo de una falla abierta de archivo PHP
- 15. descubriendo la ruta absoluta a un archivo de python
- 16. Determinar el motivo de la pausa de Android
- 17. ¿El motivo de MonadState obtener y poner?
- 18. Detectar el motivo para cerrar el formulario
- 19. ¿Cuál es el motivo de UnsupportedClassVersionError?
- 20. T-SQL MERGE: descubriendo qué acción tomó
- 21. ¿Cómo saber el motivo del desenfoque?
- 22. Motivo de globals() en Python?
- 23. Motivo de uso DECIMAL (31,0)
- 24. Autenticación de formularios ASP.NET fallida para la solicitud. Motivo: el ticket proporcionado ha caducado
- 25. ¿Cómo puedo obtener el último reinicio de Windows? Motivo
- 26. Motivo de los archivos de datos monolíticos
- 27. Motivo de la instalación a través de Chrome Web Store
- 28. Determinar el motivo de un proceso detenido en Linux
- 29. Cómo descubrir el motivo de la reiniciación de la aplicación ASP.NET
- 30. Motivo de la popularidad del producto frente a las alternativas
Siempre me he preguntado por qué 'mkdir()' se diseñó de la forma en que lo hizo (aunque nunca fue un problema para mí). – NPE
Lo mismo con 'delete()', simplemente devuelve un booleano. No hay indicación de por qué algo falló si no es una 'SecurityException'. –