2011-09-22 20 views
10

Jeśli zadzwonię do jednej z metod File.mkdir() lub File.mkdirs() w języku Java i zwróci ona false, czy istnieje sposób sprawdzenia, dlaczego katalog nie został utworzony?Wykrywanie przyczyny niepowodzenia pliku File.mkdirs()

+2

Zawsze zastanawiałem się, dlaczego 'mkdir()' został zaprojektowany tak, jak to zrobił (nie to, że kiedykolwiek był dla mnie problem). – NPE

+1

To samo z 'delete()', po prostu zwraca boolean. Brak wskazania, dlaczego coś nie działa, jeśli nie jest to "SecurityException". –

Odpowiedz

4

Niezupełnie, nie. Jeśli NIE zostanie wygenerowany SecurityException, najbardziej prawdopodobną przyczyną jest literówka na ścieżce, co oznacza, że ​​przypadkowo podano ścieżkę nadrzędną do nowych katalogów, która jest w jakiś sposób nieważna.

Pewnie nie masz to zawinięte w try { ... } catch (Exception e) bloku, gdzie nie zrealizować SecurityException jest wyrzucane, ponieważ jesteś połowu przodkiem SecurityException, prawda?

Jeśli masz głębokie przekonanie, że wszystko wygląda dobrze i nadal się nie udaje, przypuszczam, że możesz po prostu umieścić go w pętli, aby powtórzyć, powiedzmy, trzy razy. Jeśli nadal się nie powiedzie iw zależności od aplikacji, możesz wygenerować alert na poziomie interfejsu użytkownika lub zarejestrować błąd w pliku dziennika (zakładając, że możesz do niego pisać).

Przypuszczam, że jest możliwe, że jakiś głębszy problem z I/O uniemożliwia mu działanie, ale poza zwykłym powiadamianiem użytkownika o niepowodzeniu, niewiele można (lub naprawdę trzeba) zrobić na poziomie aplikacji. Jeśli jest coś poważniejszego w błędnym I/O, to jest to bardziej prawdopodobny problem z systemem/sprzętem/systemem operacyjnym, lub czymś kompletnie nieporęcznym, nad którym nie masz kontroli, podobnie jak awaria podsystemu/usługi.

... a jeśli tak się stanie, to jest to zadanie informatyka, a nie aplikacji. Chyba że twoja aplikacja w jakiś sposób powoduje awarię.

+2

Nie, tak nie było. Odkryłem problem (katalog nadrzędny miał niewłaściwego właściciela w jednym węźle klastra), ale wymagało ode mnie przejścia na inne piętro, porozmawiania z administratorem sieci, poproszenia kogoś o udzielenie mi sesji ssh i wreszcie wpisania '. mkdir my/wadliwy/path'. Miałem nadzieję na bardziej praktyczny sposób robienia tego ... – brandizzi

+0

Dobrze, proszę - problem z facetem IT. :) – jefflunt

+1

Haha, na pewno :) ale Java nie była pomocna albo ... – brandizzi

Powiązane problemy