Mam ścieżkę pliku w formie ciągu. W Javie muszę ustalić, czy ten plik istnieje w systemie plików (a nasz kod musi być wieloplatformowy, ponieważ działa w systemach Windows, Linux i OS X).Nie jest rozróżniana wielkość liter pliku.equals w systemie plików z rozróżnianiem wielkości liter
Problem polega na tym, że przypadek ścieżki pliku i samego pliku może się nie zgadzać, mimo że reprezentują ten sam plik (prawdopodobnie dlatego, że pochodziły z systemu Windows, a rozbieżności nie zostały zauważone).
Na przykład mam ścieżkę pliku "ABC.txt". Plik o nazwie "abc.txt" istnieje w systemie plików. Poniższy kod powróci prawdziwą w systemie Windows, ale fałszywy w systemie Linux:
new File("ABC.txt").exists();
Jaki jest najlepszy sposób, aby określić, czy plik istnieje, a jeśli istnieje, to zwraca uchwyt do pliku na plik system?
Tak, jest to możliwe, ale problem nadal występuje, jeśli katalogi na ścieżce są nieprawidłowe. Rozwiązaniem może być algorytm rekursywny, który idzie w górę drzewa katalogów bez rozróżniania wielkości liter. Ale mam nadzieję na lepsze rozwiązanie! – jwaddell
@jwaddell: Nie sądzę, że istnieje lepsze rozwiązanie, ponieważ nazwa pliku/ścieżka może znajdować się w dowolnej obudowie, a system Linux traktuje go w trybie rozróżniania wielkości liter. –
Wygląda na to, że niechętnie zaimplementuję to rozwiązanie plus rekurencyjne sprawdzanie ścieżki. – jwaddell