Chcę przetestować, czy plik istnieje na podłączonym dysku sieciowym.Java - sprawdź, czy plik istnieje na dysku sieciowym
Napisałem ten prosty kod używając File.exists
.
import java.io.File;
public class NetworkDrive {
public static void main(String[] args) {
System.err.println(new File("/Volumes/DATA/testedFile.txt").exists());
}
}
Działa poprawnie głównie, ale znalazłem przypadek skrajny, w którym ten kod jest problematyczny. Jeśli dysk został podłączony i z jakiegoś powodu połączenie sieciowe uległo awarii, program zawiesza się na bardzo długi czas (10 minut).
time java NetworkDrive
false
real 10m6.114s
user 0m0.431s
sys 0m0.949s
Nawet jeśli próbuję go zabić korzystania z sygnałem KILL
, proces nadal działa.
1875 ttys000 0:00.00 (java)
Problemem jest samo z java.nio
:
Files.exists(Paths.get("/Volumes/DATA/testedFile.txt"));
używam java 1.8.0_20 wersji na OS X Yosemite.
Chociaż nie powinno to zbytnio zmienić, czy próbowałeś z 'java.nio.file.Files # exists()'? – fge
@fge, tak. To był mój pierwszy niepewny. – gontard
Więc trzymaj się pliku java.nio.file. To jest 2015, powinieneś upuścić Plik i tak – fge