2011-12-25 17 views
8

Mam dość głupie pytanie, ale nie udało się znaleźć rozwiązanie dla tego:ścieżka do pliku Java w systemie Linux

Kiedy próbuję odczytać plik i dostaję „file not found błąd” jest uruchomieniem. Jednak skompilował plik.

Jestem na Linux, więc używam czegoś oświadczenie jak:

Scanner s = new Scanner(new File("home/me/java/ex.txt")); 

i to daje mi rror Czas:

/home/me/javaException in thread "main" java.io.FileNotFoundException: home/me/java/ex.txt (No such file or directory) 
at java.io.FileInputStream.open(Native Method) 
at java.io.FileInputStream.<init>(FileInputStream.java:137) 
at java.util.Scanner.<init>(Scanner.java:653) 
at test.main(test.java:14) 

Próbuję zmienić każdą możliwą rzeczą wzdłuż linii nazwy plików, ale nic nie działa.

Jakieś wskazówki, dlaczego tak się dzieje? gdzie java domyślnie szuka plików?

+1

oznacza, że ​​nie znaleziono lokalizacji pliku. domyślam się, że twoja ścieżka to "/home/me/java/ex.txt" w systemie Linux. –

+0

Jaka jest wartość ['user.home'] (http://pscode.org/prop/all.html?prop=user.home&format=TSV) w tym systemie? –

Odpowiedz

14

Wygląda na to, że brakuje Ci wiodącego ukośnika. Może spróbuj:

Scanner s = new Scanner(new File("/home/me/java/ex.txt")); 

(co do których szuka plików domyślnie jest to gdzie JVM jest prowadzony od względnych ścieżek, jak to masz w swoim pytaniu)

+1

Dzięki Todd. To było wiodące cięcie. To rozwiązało problem! Głupi ja! – AJW

10

myślę Todd jest poprawna , ale myślę, że jest jeszcze jedna rzecz, którą powinieneś rozważyć. Możesz niezawodnie uzyskać katalog domowy z JVM w środowisku wykonawczym, a następnie możesz tworzyć obiekty plików względem tej lokalizacji. Nie stanowi to większego problemu i jest to coś, co docenisz, jeśli kiedykolwiek przeprowadzisz się do innego komputera lub systemu operacyjnego.

File homedir = new File(System.getProperty("user.home")); 
File fileToRead = new File(homedir, "java/ex.txt"); 
+3

Jeśli przenosisz do * dowolnego * innego systemu operacyjnego, proponuję zamienić '/ /' w ścieżce dla 'System.getProperty (" file.separator ")' lub na przemian konstruować ścieżkę w częściach używając tego konstruktora. W przeciwnym razie +1 –

+0

Rachunek dzięki za tę wspaniałą wskazówkę. Wdrażę to od razu. – AJW

+3

Jeśli kierujesz się do systemów UNIX, Linux, OS X lub Windows, będzie działał ukośnik w przód. Tak, nawet Windows. – Bill

Powiązane problemy