2009-10-02 9 views
5

Estoy creando nombres de archivo basados ​​en valores dinámicos como el nombre de la empresa y el nombre/apellido.Creación de nombres de archivo válidos en Java

Me gustaría verificar que el nombre del archivo sea válido antes de intentar crear el archivo. Eso es comprobar que no contiene ningún carácter ilegal, y reemplazarlos si lo hacen.

Por supuesto, solo podía usar una expresión regular, pero me preguntaba si existía un método existente en algo como commons-lang o commons-io que hace esto?

Respuesta

5

Con Java 7, el nuevo método java.nio.file.Paths.get(String path) arrojará un InvalidPathException si la ruta contiene caracteres ilegales para el sistema de archivos específico, pero en Java 6 o anterior, existe desafortunadamente no hay tal función.

Dado que los caracteres permitidos y la longitud de un nombre de archivo dependen de la plataforma (o incluso del sistema de archivos), es posible que no tenga otra opción que tratar de crear el archivo y ver si falla. En Java 6, la creación de un FileOutputStream con una ruta ilegal generará una FileNotFoundException bastante inesperada.

3

Bueno, debe quitarlo incluso si es un nombre de archivo legal, porque podría contener una ruta, en cuyo caso un usuario podría suministrar ../../../../../. ./../../etc/passwd etc.

Cuestiones relacionadas