2009-10-02 17 views
5

Tworzę nazwy plików na podstawie wartości dynamicznych, takich jak nazwa firmy i imię/nazwisko.Tworzenie poprawnych nazw plików w Javie

Chciałbym następnie sprawdzić, czy nazwa pliku jest poprawna przed próbą utworzenia pliku. To oznacza, że ​​nie zawiera żadnych niedozwolonych znaków i jeśli je zastępuje, to je zastępuje.

Mógłbym oczywiście użyć zwykłego wyrażenia, ale zastanawiałem się, czy istnieje istniejąca metoda w czymś podobnym do commons-lang lub commons-io, która to robi?

Odpowiedz

5

W przypadku Javy 7 nowa metoda java.nio.file.Paths.get(String path) rzuci InvalidPathException, jeśli ścieżka zawiera niedozwolone znaki dla określonego systemu plików, ale w Javie 6 lub wcześniejszej wersji istnieje niestety nie ma takiej funkcji.

Ponieważ dozwolone znaki i długość nazwy pliku są zależne od platformy (lub nawet systemu plików), nie ma lepszej opcji niż próba utworzenia pliku i sprawdzenia, czy się nie powiedzie. W Javie 6 utworzenie FileOutputStream z nielegalną ścieżką spowoduje odrzucenie dość niespecyficznego wyjątku FileNotFoundException.

3

Powinieneś go rozebrać, nawet jeśli jest prawną nazwą pliku, ponieważ może zawierać ścieżkę, w którym to przypadku użytkownik może podać ../../../../../. ./../../etc/passwd itp.