Napotkałem błąd, którego nie mogę znaleźć za żadną logiką. Mam ten obiekt File, który jest tworzony tak: (!?)File.exists() zwraca wartość false, gdy plik istnieje
File file = new File("utilities/data/someTextFile.txt");
I wtedy zrobić file.exists()
i zwraca false
. Jeśli plik nie zostanie znaleziony, loguję się do pliku f.getAbsolutePath()
. Kiedy patrzę na ścieżkę, wydaje mi się, że jest OK. Mogę skopiować i wkleić pełną ścieżkę do okna "Uruchom" w Windows, a plik otworzy się dobrze.
Plik istnieje cały czas i nie jest usuwany ani zmieniany podczas działania mojej aplikacji. Znajduje się na lokalnym komputerze.
To zdaje się zdarzać tylko w pewnych sytuacjach. Mogę odtworzyć błąd w dowolnym momencie, ale jestem pewien, że ścieżka pliku pliku nie zostanie zmieniona przez działania, które wykonuję, aby odtworzyć błąd.
Co może spowodować, że file.exists()
zwróci false? Czy ma to coś wspólnego z uprawnieniami lub blokadami plików itp.?
Czy możliwe jest odczytanie z pliku, nawet jeśli istnieje() zwraca false? –
tak, mogę odczytać z pliku, nawet jeśli istnieje() zwraca false. – atsjoo
Czy próbowałeś różnych JVM? Różne maszyny? Różne systemy operacyjne? –