หากมีอยู่แล้วใน classpath ให้รับจาก classpath แทนจากระบบไฟล์ดิสก์ java.io.File
ไม่คุ้นเคยกับเส้นทางญาติใน ขึ้นอยู่กับไดเร็กทอรีการทำงานปัจจุบันซึ่งคุณไม่สามารถควบคุมได้ทั้งหมดจากภายในโค้ด Java
สมมติว่าListStopWords.txt
อยู่ในแพ็คเกจเดียวกับFileLoader
ชั้นเรียนของคุณจากนั้นให้ทำ:
URL url = getClass().getResource("ListStopWords.txt");
File file = new File(url.getPath());
หรือถ้าท้ายที่สุดแล้วสิ่งที่คุณต้องการคือInputStream
:
InputStream input = getClass().getResourceAsStream("ListStopWords.txt");
สิ่งนี้เป็นที่ต้องการมากกว่าการสร้างnew File()
เนื่องจากurl
อาจไม่จำเป็นต้องแสดงถึงเส้นทางระบบไฟล์ดิสก์ แต่ยังสามารถแสดงเส้นทางระบบไฟล์เสมือน (ซึ่งอาจเกิดขึ้นเมื่อ JAR ถูกขยายลงในหน่วยความจำแทนที่จะเป็นโฟลเดอร์ชั่วคราวในระบบไฟล์ดิสก์) หรือแม้กระทั่งเส้นทางเครือข่ายซึ่งทั้งคู่ไม่สามารถย่อยได้ตามนิยามโดยตัวFile
สร้าง
หากไฟล์อยู่ -as ชื่อแพคเกจคำแนะนำคำเป็นจริง fullworthy ไฟล์คุณสมบัติ (ที่มีkey=value
สาย) มีเพียงส่วนขยาย "ผิด" แล้วคุณจะกินInputStream
ทันทีที่load()
วิธีการ
Properties properties = new Properties();
properties.load(getClass().getResourceAsStream("ListStopWords.txt"));
หมายเหตุ: เมื่อคุณพยายามเข้าถึงจากstatic
บริบทภายในให้ใช้FileLoader.class
(หรืออะไรก็ได้YourClass.class
) แทนgetClass()
ในตัวอย่างด้านบน
properties.files
สำหรับ2
?