ข้อยกเว้น FileNotFound

ฉันกำลังพยายามอ่านไฟล์ในเซิร์ฟเล็ต ฉันใช้คราส IDE

ฉันได้รับ FileNotFoundException หากฉันระบุชื่อไฟล์ที่เกี่ยวข้อง

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

รหัสเดียวกันนี้ใช้งานได้หากฉันใส่เส้นทางที่แน่นอนดังนี้:

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

ไฟล์ Java และไฟล์ข้อความอยู่ในโฟลเดอร์เดียวกัน

มันค้นหาไฟล์ข้อความในโฟลเดอร์อื่นหรือไม่?


person Pratik    schedule 14.10.2012    source แหล่งที่มา
comment
วางไฟล์ของคุณไว้นอกโฟลเดอร์ src..   -  person Rohit Jain    schedule 14.10.2012
comment
หากไฟล์จบลงที่คลาสพาธ ให้อ่านเป็นรีซอร์ส หากเป็นไฟล์ที่ต้องเปลี่ยนแปลง (เช่น ไฟล์กำหนดค่า) จะเป็นการดีกว่าถ้าวางไว้นอกบริบทของแอป และระบุไดเร็กทอรีที่สามารถพบได้เป็นพารามิเตอร์การเริ่มต้น   -  person Dave Newton    schedule 14.10.2012
comment
System.out.println(ไฟล์ใหม่(Input.txt).getAbsolutePath()); พิมพ์สิ่งนี้และดูว่ามันค้นหาที่ไหนและวางไฟล์ของคุณไว้ตรงนั้น!!!   -  person madhairsilence    schedule 14.10.2012
comment
ฉันจะทำให้มันค้นหาในไดเร็กทอรีของโครงการของฉันได้อย่างไร?   -  person Pratik    schedule 14.10.2012
comment
ฉันวางไฟล์ไว้นอกโฟลเดอร์ src แต่มันไม่ได้ช่วยอะไร   -  person Pratik    schedule 14.10.2012
comment
@DaveNewton มันไม่ใช่ไฟล์ปรับแต่ง มันมีสตริงที่ฉันต้องการโหลดใน ArrayList ของฉัน   -  person Pratik    schedule 14.10.2012
comment
ใช้ getResourceAsStream หรืออะไรก็ตามที่เรียกว่า อย่าเปิดโดยใช้ไฟล์ IO ปกติ   -  person Dave Newton    schedule 14.10.2012
comment
โดยกล่าวถึงไดเร็กทอรีโครงการ! เส้นทางเต็ม!   -  person madhairsilence    schedule 14.10.2012
comment
ฉันไม่เข้าใจว่าทำไมผู้คนถึงตอบคำถามเหมือนเดิม: Java มีกลไกที่รู้จักสำหรับการโหลดไฟล์จากคลาสพาธ และเป็นสิ่งที่ควรใช้ในเซิร์ฟเล็ตหรือควรระบุพาธสัมบูรณ์ (มีแนวโน้มว่า นอก การใช้งานแอป)   -  person Dave Newton    schedule 14.10.2012


คำตอบ (2)


การตั้งค่าไดเร็กทอรีการทำงาน

ทางเลือกหนึ่งที่คุณมีเมื่อทำงานภายใน Eclipse คือ ตั้งค่าไดเร็กทอรีการทำงานในการกำหนดค่าการเรียกใช้งานของคุณ เพื่อทำสิ่งนี้:

  1. ไปที่ Run | Run Configurations...
  2. เลือกการกำหนดค่าของคุณในบานหน้าต่างด้านซ้ายมือ
  3. เลือกแท็บ Arguments
  4. ไปที่ส่วน Working directory
  5. เลือก Other
  6. ป้อนในไดเร็กทอรีฐานที่คุณต้องการ

คุณสามารถตรวจสอบสิ่งนี้ได้ในการทดสอบโดยการพิมพ์:

System.getProperty("user.dir") 

สิ่งนี้มีประโยชน์ในการไม่เปลี่ยนโค้ดของคุณสำหรับการผลิตและการทดสอบ

คำแนะนำ

อย่างไรก็ตาม วิธีที่ดีที่สุดคือระบุไดเร็กทอรีการทำงานให้ชัดเจนเสมอโดยวิธีการกำหนดค่า ซึ่งจะทำให้ไดเร็กทอรีการทำงานอยู่ภายใต้การควบคุมโดยตรงของแอปพลิเคชันของคุณ และอยู่ห่างจากเครื่องมือและคอนเทนเนอร์เซิร์ฟเล็ต เช่น Eclipse และ Tomcat ในการดำเนินการนี้ คุณจะต้องใช้ File ตัวสร้าง

new File(parent, file)
person btiernay    schedule 14.10.2012

- หากคุณใช้ IDE เช่น Eclipse ให้วางไฟล์ไว้ใน Application's Project Folder

- คุณสามารถวางไว้ในโฟลเดอร์ src ได้เช่นกัน

person Kumar Vivek Mitra    schedule 14.10.2012