Jak mogę sprawdzić, czy plik istnieje, przed otwarciem go do odczytu w Javie (odpowiednik Perla
-e $filename
)?
Jedyne podobne pytanie na temat SO dotyczy pisania pliku, w związku z czym udzielono na nie odpowiedzi, FileWriter
co oczywiście nie ma tutaj zastosowania.
Jeśli to możliwe, wolę prawdziwe wywołanie interfejsu API zwracające wartość prawda / fałsz, a nie niektóre „Wywołanie interfejsu API w celu otwarcia pliku i wychwycenia, gdy zgłasza wyjątek, w którym sprawdzane jest„ brak pliku ”w tekście”, ale mogę żyć z ten drugi.
java
file-io
io
file-exists
DVK
źródło
źródło
canRead
,canWrite
orazcanExecute
aby sprawdzić, że .Odpowiedzi:
Używanie
java.io.File
:źródło
if(f.isFile())
zamiast tego.Polecam używać
isFile()
zamiastexists()
. Przez większość czasu chcesz sprawdzić, czy ścieżka wskazuje plik nie tylko, że istnieje. Pamiętaj, żeexists()
zwróci wartość true, jeśli ścieżka wskazuje katalog.new File("C:/").exists()
zwróci wartość true, ale nie pozwoli na otwarcie i odczytanie z niej pliku.źródło
/path
,new File("file.txt").exists()
powrócitrue
, jeśli ścieżka jest prawidłowa pełny/path/to/file.txt
, odpowiedź jest wielki nie (chyba że inny plik/path/file.txt
istnieje).Używając nio w Javie SE 7,
Jeśli oba
exists
inotExists
return false, istnienie pliku nie może zostać zweryfikowany. (być może brak prawa dostępu do tej ścieżki)Możesz sprawdzić, czy
path
jest to katalog, czy zwykły plik.Sprawdź ten samouczek Java SE 7 .
źródło
java.nio.file.Files.exists()
jest znacznie szybszy niżjava.io.File.exists()
(z mojego małego testu porównawczego na jedynym testowanym komputerze: Windows Server 2012 z Javą 1.7.0_45 x64).java.nio.file.Files.exists()
byłem 5 razy wolniejszy niżjava.io.File.exists
. (Win7 Java 1.7.0_79 - x86)Za pomocą Java 8:
źródło
Files.exists()
bierze dwa argumenty. Zazwyczaj potrzebujesz czegoś takiegoFiles.exists(path, LinkOption.NOFOLLOW_LINKS )
.To nie utworzy pliku fizycznego. Po prostu utworzy obiekt klasy File. Aby fizycznie utworzyć plik, musisz go jawnie utworzyć:
Więc
f.exists()
może być używany w celu sprawdzenia, czy taki plik istnieje, czy nie.źródło
źródło
-e
zapewnia również, że aplikacja może „odczytać” plik?Istnieje wiele sposobów na osiągnięcie tego.
W przypadku tylko dla istnienia. Może to być plik lub katalog.
Sprawdź plik
Sprawdź katalog.
Java 7 sposób.
źródło
Możesz użyć następujących opcji:
File.exists()
źródło
pierwsze trafienie dla „istnieje plik Java” w google:
źródło
String.valueOf()
, który obsługuje wartości zeroweNie rób Wystarczy złapać
FileNotFoundException.
System plików musi sprawdzić, czy plik i tak istnieje. Nie ma sensu robić tego wszystkiego dwa razy i kilka powodów, aby tego nie robić, takich jak:Nie próbuj odgadnąć systemu po raz drugi. To wie I nie próbuj przewidywać przyszłości. Ogólnie najlepszym sposobem sprawdzenia, czy jakikolwiek zasób jest dostępny, jest po prostu próba jego użycia.
źródło
Dla mnie kombinacja zaakceptowanej odpowiedzi Seana AO Harneya i wynikowego komentarza Cort3za wydaje się najlepszym rozwiązaniem.
Użyłem następującego fragmentu kodu:
Mam nadzieję, że to może komuś pomóc.
źródło
Wiem, że jestem trochę spóźniony w tym wątku. Oto moja odpowiedź, ważna od wersji Java 7 i nowszych.
Poniższy fragment kodu
jest całkowicie satysfakcjonujący, ponieważ metoda
isRegularFile
zwraca,false
jeśli plik nie istnieje. Dlatego nie trzeba sprawdzać, czyFiles.exists(...)
.Pamiętaj, że inne parametry to opcje wskazujące, jak należy obsługiwać łącza. Domyślnie śledzone są dowiązania symboliczne.
Z dokumentacji Oracle Oracle
źródło
Files.notExists
,Files.isDirectory
aFiles.isRegularFile.
najlepszą alternatywą dla tego jest:path.toFile().exists()
Warto również zapoznać się z Commons FileUtils https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/FileUtils.html Ma to dodatkowe metody zarządzania plikami i często lepszy niż JDK.
źródło
Na przykład, jeśli masz katalog plików i chcesz sprawdzić, czy istnieje
exists
zwróci false, jeśli plik nie istniejeźródło: https://alvinalexander.com/java/java-file-exists-directory-exists
źródło
Prosty przykład z dobrymi praktykami kodowania i obejmujący wszystkie przypadki:
Referencje i więcej przykładów na
https://zgrepcode.com/examples/java/java/nio/file/filealreadyexistsexception-implementations
źródło
Jeśli chcesz sprawdzić
File
w katalogudir
i sprawdź
check
wynikźródło
da rade
źródło
Nie używaj konstruktora plików z ciągiem.
To może nie działać!
Zamiast tego użyj identyfikatora URI:
źródło
File.exists()
aby sprawdzić, czy plik istnieje, zwróci wartość logiczną wskazującą status operacji sprawdzania; true, jeśli plik istnieje; fałsz, jeśli nie istnieje.źródło
Aby sprawdzić, możesz użyć następującego kodu:
źródło
Możesz to zrobić w ten sposób
źródło
File.is Exist()
lubFiles.isRegularFile()
w niejIstnieje szczególny cel zaprojektowania tych metod. Nie możemy powiedzieć, aby użyć nikogo do sprawdzenia, czy plik istnieje, czy nie.
źródło
Aby sprawdzić, czy plik istnieje, wystarczy zaimportować bibliotekę java.io. *
Źródło: http://newsdivariotipo.altervista.org/java-come-controllare-se-un-file-esiste/
źródło