Saya punya pertanyaan yang agak konyol, tetapi saya belum bisa menemukan solusi untuk ini:
Ketika saya mencoba dan membaca file, saya mendapatkan "file not found error" adalah runtime. Namun, file tersebut telah dikompilasi.
Saya menggunakan Linux, jadi saya menggunakan pernyataan seperti:
Scanner s = new Scanner(new File("home/me/java/ex.txt"));
dan itu memberi saya runtime rror:
/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)
Saya mencoba mengubah setiap hal yang mungkin di sepanjang garis nama file, tetapi tampaknya tidak ada yang berhasil.
Adakah petunjuk mengapa hal ini terjadi? di mana java mencari file secara default?
Sepertinya Anda kehilangan garis miring di depannya. Mungkin bisa dicoba:
Scanner s = new Scanner(new File("/home/me/java/ex.txt"));
(untuk tempat mencari file secara default, itu adalah tempat JVM dijalankan untuk jalur relatif seperti yang Anda miliki dalam pertanyaan Anda)
Saya pikir Todd benar, tetapi saya pikir ada satu hal lain yang harus Anda pertimbangkan. Anda bisa mendapatkan direktori home dari JVM pada saat runtime, dan kemudian Anda dapat membuat objek file relatif terhadap lokasi tersebut. Ini tidak terlalu merepotkan, dan ini adalah sesuatu yang akan Anda hargai jika Anda pindah ke komputer atau sistem operasi lain.
File homedir = new File(System.getProperty("user.home"));
File fileToRead = new File(homedir, "java/ex.txt");
Dokumentasi resmi sudah jelas mengenai Path
.
Sintaks Linux: /home/joe/foo
Sintaks Windows: C:\home\joe\foo
Catatan: joe
adalah nama pengguna Anda untuk contoh-contoh ini.