2009-08-17 12 views
12

Tengo un List<String> de nombres de archivo de una carpeta y un nombre de archivo determinado como String. Quiero detectar si el nombre del archivo está en la lista, pero debo respetar la propiedad del sistema de archivos subyacente de si distingue entre mayúsculas y minúsculas.¿Cómo puedo detectar si el sistema de archivos distingue entre mayúsculas y minúsculas?

¿Hay alguna manera fácil de hacer esto (que no sea el "truco" de comprobación System.getProperty("os.name", "").toLowerCase().indexOf("windows")!=-1)? ;-)

+0

Tenga en cuenta que el "sistema de archivos insensible a las mayúsculas y minúsculas" no es equivalente a "OS es Windows", de todos modos. Todos los sistemas operativos Windows, Linux y Mac pueden usar sistemas de archivos sensibles a mayúsculas y minúsculas o que no distinguen entre mayúsculas y minúsculas; no confundas los conceptos. El "truco" sería afirmar que un nombre de archivo en minúscula no existe; cree un archivo (temporal) con ese nombre en mayúsculas, luego verifique si existe el archivo con nombre en minúscula. –

Respuesta

11

No use cadenas para representar sus archivos; utilizar java.io.File:

http://java.sun.com/javase/6/docs/api/java/io/File.html#equals(java.lang.Object)

+0

Sí, esta es la solución más elegante y estable, creo ... – Epaga

+1

Como nota adicional, puede obtener una matriz de archivos de un directorio usando el método list FileS (File) en un objeto File para dicho directorio. Esto puede ser manipulado como una matriz o convertido a una lista usando Arrays.asList – Powerlord

+0

y básicamente lo que hice fue cambiar el método list() a un método listFiles ... – Epaga

1

Escriba un archivo llamado "HelloWorld"; Intentar leer un archivo llamado "HELLOwORLD"?

1
boolean isFileSystemCaseSensitive = !new File("a").equals(new File("A")); 
+4

Acabo de probar esto en Mac OSX, sistema de archivos insensible a mayúsculas y minúsculas y no devuelve el resultado esperado. – SaM

+0

Con la nota de que no se tiene en cuenta el sistema de archivos, solo el sistema operativo: esta respuesta no es peor que la aceptada. Siempre que sepa que está bien. Lo tomaré porque no pude encontrar una mejor solución que tenga en cuenta a FS. +1 – NickSoft

2

Parece que se puede utilizar el IOCase.

+2

Una vez más, no funciona muy bien para OS X. Solo asume mayúsculas y minúsculas, porque los separadores de archivos son barras diagonales. Vea esta discusión entre los desarrolladores para obtener más información: https://issues.apache.org/jira/browse/IO-171 –

Cuestiones relacionadas