Tengo una ruta de archivo en forma de cadena. En Java, necesito determinar si ese archivo existe en el sistema de archivos (y nuestro código debe ser multiplataforma ya que se ejecuta en Windows, Linux y OS X).FileEquals insensible a archivos en el sistema de archivos con distinción entre mayúsculas y minúsculas
El problema es que el caso de la ruta del archivo y el archivo puede no coincidir, aunque representan el mismo archivo (presumiblemente porque se originó en Windows y no se notó la discrepancia).
Por ejemplo, tengo una ruta de archivo de "ABC.txt". Un archivo llamado "abc.txt" existe en el sistema de archivos. El siguiente código volverá cierto en Windows, pero falsa en Linux:
new File("ABC.txt").exists();
¿Cuál es la mejor manera de determinar si el archivo existe, y si existe para devolver un identificador para el archivo en el archivo ¿sistema?
Sí, eso es una posibilidad, pero el problema todavía existe si los directorios en la ruta son el caso incorrecto. La solución podría terminar siendo algún tipo de algoritmo recursivo que sube al árbol de directorios haciendo búsquedas insensibles a mayúsculas y minúsculas. ¡Pero espero una mejor solución! – jwaddell
@jwaddell: no creo que haya una solución mejor, ya que el nombre de archivo/ruta puede estar en cualquier envoltura y el sistema operativo Linux lo trata en un modo sensible a mayúsculas y minúsculas. –
Parece que implementaré de mala gana esta solución, además de la comprobación de ruta recursiva. – jwaddell