2011-09-22 14 views
10

Se chiamo uno dei metodi File.mkdir() o File.mkdirs() in Java e restituisce false, c'è un modo per sapere perché la directory non è stata creata?Scoperta del motivo per errore File.mkdirs()

+2

Mi sono sempre chiesto perché 'mkdir()' è stato progettato come ha fatto (non che sia mai stato un problema per me). – NPE

+1

Lo stesso con 'delete()', restituisce solo un valore booleano. Nessuna indicazione del motivo per cui qualcosa non ha funzionato se non è un 'SecurityException'. –

risposta

4

Non proprio, no. Se non viene lanciato un SecurityException, la causa più probabile è un errore di battitura nel percorso, nel senso che hai specificato per errore un percorso genitore per le nuove directory che è in qualche modo non valido.

Non si supponga di avere avvolto in un blocco try { ... } catch (Exception e), in cui non vi rendete conto di una SecurityException viene gettato, perché volete prendere un antenato di SecurityException, vero?

Se si crede fortemente che tutto sia a posto e non funziona ancora, suppongo che si possa semplicemente inserire un ciclo per riprovare, per esempio, tre volte. Se il problema persiste e, a seconda dell'applicazione, è possibile che venga generato un tipo di avviso a livello di interfaccia utente o che l'errore venga registrato in un file di registro (supponendo che sia possibile scrivere su di esso).

Suppongo che sia possibile che un problema di I/O più profondo gli impedisca di funzionare, ma al di là della semplice notifica all'utente di un errore non c'è molto che puoi (o dovresti fare davvero) a livello di applicazione. Se c'è qualcosa di più profondo nell'I/O sbagliato, è più probabile che si tratti di un problema con il sistema/hardware/sistema operativo, o qualcosa di completamente sbagliato che non si ha alcun controllo su come un sottosistema o un arresto anomalo del servizio.

... e se ciò accade, è responsabilità del tecnico IT risolvere il problema, non la vostra applicazione. A meno che, naturalmente, la tua app non sia in qualche modo causa di crash.

+2

No, non era il caso. Ho scoperto il problema (la directory genitore aveva un proprietario errato in un nodo di un cluster) ma mi obbligava ad andare su un altro piano, parlare con l'amministratore di rete, chiedere a qualcuno di darmi una sessione ssh e, infine, digitare ' mkdir my/faulty/path'. Speravo in un modo più pratico di farlo ... – brandizzi

+0

Beh, ecco qua - Problema di tipo IT. :) – jefflunt

+1

Haha, di sicuro :) ma Java non è stato utile neanche ... – brandizzi

Problemi correlati