2009-10-02 12 views
5

Sto creando nomi di file basati su valori dinamici come nome azienda e nome/cognome.Creazione di nomi file validi in Java

Vorrei quindi verificare che il nome file sia valido prima di tentare di creare il file. Questo significa che non contiene caratteri illegali e sostituirli se lo fanno.

Naturalmente potevo semplicemente usare un'espressione regolare, ma mi chiedevo se esistesse un metodo esistente in qualcosa come Commons-lang o commons-io che lo fa?

risposta

5

Con Java 7, il nuovo metodo java.nio.file.Paths.get(String path) genererà un InvalidPathException se il percorso contiene caratteri non validi per il file system specifico, ma in Java 6 o precedenti, c'è sfortunatamente nessuna funzione del genere.

Poiché i caratteri consentiti e la lunghezza del nome di un file dipendono fortemente dalla piattaforma (o anche dal file system), è possibile che l'opzione non sia migliore di cercare di creare il file e vedere se fallisce. In Java 6, la creazione di un FileOutputStream con un percorso illegale genererà un FileNotFoundException piuttosto aspecifico.

3

Beh, dovresti spogliarlo anche se è è un nome file legale, perché potrebbe contenere un percorso, nel qual caso un utente potrebbe fornire ../../../../../. ./../../etc/passwd etc.

Problemi correlati