ฉันมีรหัสนี้ซึ่งอ่านไฟล์ทั้งหมดจากไดเร็กทอรี
File textFolder = new File("text_directory");
File [] texFiles = textFolder.listFiles( new FileFilter() {
public boolean accept( File file ) {
return file.getName().endsWith(".txt");
}
});
มันใช้งานได้ดี มันเติมอาร์เรย์ด้วยไฟล์ทั้งหมดที่ลงท้ายด้วย ".txt" จากไดเร็กทอรี "text_directory"
ฉันจะอ่านเนื้อหาของไดเร็กทอรีในลักษณะเดียวกันภายในไฟล์ JAR ได้อย่างไร
สิ่งที่ฉันอยากทำจริงๆคือแสดงรายการภาพทั้งหมดในไฟล์ JAR ของฉันดังนั้นฉันจึงสามารถโหลดได้ด้วย:
ImageIO.read(this.getClass().getResource("CompanyLogo.png"));
(อันนี้ใช้ได้เพราะ "CompanyLogo" เป็น "ฮาร์ดโค้ด" แต่จำนวนภาพในไฟล์ JAR อาจมีความยาวตัวแปรได้ตั้งแต่ 10 ถึง 200)
แก้ไข
ดังนั้นฉันเดาว่าปัญหาหลักของฉันคือ: จะรู้ชื่อไฟล์ JARที่คลาสหลักของฉันอาศัยอยู่ได้อย่างไร?
java.util.Zip
จริงอยู่ที่ผมสามารถอ่านได้โดยใช้
โครงสร้างของฉันเป็นแบบนี้:
พวกเขาเป็นเหมือน:
my.jar!/Main.class
my.jar!/Aux.class
my.jar!/Other.class
my.jar!/images/image01.png
my.jar!/images/image02a.png
my.jar!/images/imwge034.png
my.jar!/images/imagAe01q.png
my.jar!/META-INF/manifest
ตอนนี้ฉันสามารถโหลดตัวอย่างเช่น "images / image01.png" โดยใช้:
ImageIO.read(this.getClass().getResource("images/image01.png));
แต่เพียงเพราะฉันรู้ชื่อไฟล์ส่วนที่เหลือฉันต้องโหลดแบบไดนามิก