Existen algunos caracteres restringidos (e incluso nombres de archivo completos, en Windows) para nombres de archivos y directorios. Este other question ya los cubre.Cómo recuperar caracteres prohibidos para nombres de archivos, en Java?
¿Hay alguna manera, en Java, de recuperar esta lista de caracteres prohibidos, que dependería del sistema (un poco como recuperar los caracteres line breaker)? ¿O solo puedo poner la lista yo mismo, buscando el sistema?
Editar: Más antecedentes sobre mi situación particular, aparte de la cuestión general.
Utilizo un nombre predeterminado, proveniente de algunos datos (sin control real sobre su contenido), y este nombre se le da a JFileChooser, como nombre de archivo predeterminado para usar (con setSelectedFile()
). Sin embargo, este trunca todo antes del último carácter no válido.
Estos nombres predeterminados ocasionalmente finalizan con las fechas en un formato "mm/dd/aa", que deja solo el "yy", en el nombre predeterminado, porque "/" están prohibidos. Como tal, buscar Excepciones no es realmente una opción allí, porque el archivo en sí ni siquiera está creado.
Editar bis: Hmm, eso me hace pensar que, si se JFileChooser truncar el nombre, es probable que tenga acceso a una lista de dichos caracteres, puede ser interesante comprobar que más.
Editar ter: Bueno, consultar las fuentes de JFileChooser muestra algo completamente simple. Para el campo de texto, usa file.getName(). En realidad, no verifica si hay caracteres no válidos, es simplemente que toma el "/" como un separador de ruta, y guarda solo el final, el "nombre de archivo real". Otros personajes prohibidos realmente pasan.
Define "carácter especial". –
+1 para la lista blanca –
+1 En la mayoría de los sistemas de archivos UNIX-y, los únicos caracteres prohibidos son '/' y el carácter nulo '\ 0'. –