Pengecualian FileNotFound

Saya mencoba membaca file di servlet. Saya menggunakan IDE gerhana.

Saya mendapatkan FileNotFoundException jika saya memberikan nama file relatif.

List<String> ls=new ArrayList<String>();
Scanner input = new Scanner(new File("Input.txt"));
while(input.hasNextLine()) {
   ls.add(input.nextLine());
}

Kode yang sama berfungsi jika saya meletakkan jalur absolut seperti ini:

Scanner input = new Scanner(new File("F:/Spring and other stuff/AjaxDemo/src/com/pdd/ajax/Input.txt"));

File Java dan file teks ada di folder yang sama.

Apakah ia mencari file teks di folder lain?


person Pratik    schedule 14.10.2012    source sumber
comment
Tempatkan file Anda di luar folder src..   -  person Rohit Jain    schedule 14.10.2012
comment
Jika file berakhir di jalur kelas, bacalah sebagai sumber daya. Jika itu adalah file yang perlu diubah (seperti file konfigurasi) maka lebih baik menempatkannya di luar konteks aplikasi dan menyediakan direktori di mana file tersebut dapat ditemukan sebagai parameter inisialisasi.   -  person Dave Newton    schedule 14.10.2012
comment
System.out.println(File baru(Input.txt).getAbsolutePath()); Cetak ini dan lihat, di mana ia mencari dan letakkan file Anda di sana!!!   -  person madhairsilence    schedule 14.10.2012
comment
Bagaimana cara membuatnya mencari di direktori proyek saya?   -  person Pratik    schedule 14.10.2012
comment
Saya menempatkan file di luar folder src tetapi tidak membantu.   -  person Pratik    schedule 14.10.2012
comment
@DaveNewton Ini bukan file konfigurasi. Ini memiliki string yang ingin saya muat di ArrayList saya   -  person Pratik    schedule 14.10.2012
comment
Gunakan getResourceAsStream, atau apa pun namanya. Jangan membukanya menggunakan file IO biasa.   -  person Dave Newton    schedule 14.10.2012
comment
Dengan menyebutkan direktori proyek! Jalur penuh!   -  person madhairsilence    schedule 14.10.2012
comment
Saya tidak mengerti mengapa orang menjawab pertanyaan sebagaimana adanya: Java memiliki mekanisme yang diketahui untuk memuat file dari jalur kelas, dan itulah yang harus digunakan dalam servlet-atau jalur absolut harus disediakan (kemungkinan di luar penerapan aplikasi).   -  person Dave Newton    schedule 14.10.2012


Jawaban (2)


Mengatur Direktori Kerja

Salah satu opsi yang Anda miliki saat bekerja di dalam Eclipse adalah setel direktori kerja dalam konfigurasi peluncuran Anda. Untuk melakukan ini:

  1. Arahkan ke Run | Run Configurations...
  2. Pilih konfigurasi Anda di panel sebelah kiri
  3. Pilih tab Arguments
  4. Navigasikan ke bagian Working directory
  5. Pilih Other
  6. Masukkan direktori dasar yang Anda inginkan

Anda dapat memvalidasi ini dalam pengujian dengan mencetak:

System.getProperty("user.dir") 

Keuntungannya adalah tidak mengubah kode Anda untuk produksi vs. pengujian.

Rekomendasi

Namun, pendekatan terbaik adalah selalu menjelaskan secara eksplisit tentang direktori kerja melalui konfigurasi. Ini menempatkan direktori kerja di bawah kendali langsung aplikasi Anda dan jauh dari alat dan wadah servlet seperti Eclipse dan Tomcat. Untuk melakukan ini, Anda akan menggunakan File konstruktor

new File(parent, file)
person btiernay    schedule 14.10.2012

- Jika Anda menggunakan IDE seperti Eclipse, letakkan file di Application's Project Folder.

- Anda juga dapat menempatkannya di folder src.

person Kumar Vivek Mitra    schedule 14.10.2012