Tôi có mã này đọc tất cả các tệp từ một thư mục.
File textFolder = new File("text_directory");
File [] texFiles = textFolder.listFiles( new FileFilter() {
public boolean accept( File file ) {
return file.getName().endsWith(".txt");
}
});
Nó hoạt động tuyệt vời. Nó lấp đầy mảng với tất cả các tệp kết thúc bằng ".txt" từ thư mục "text_directory".
Làm cách nào tôi có thể đọc nội dung của một thư mục theo cách tương tự trong tệp JAR?
Vì vậy, điều tôi thực sự muốn làm là liệt kê tất cả các hình ảnh bên trong tệp JAR của mình, để tôi có thể tải chúng bằng:
ImageIO.read(this.getClass().getResource("CompanyLogo.png"));
(Cái đó hoạt động vì "CompanyLogo" là "mã cứng" nhưng số lượng hình ảnh bên trong tệp JAR có thể có độ dài thay đổi từ 10 đến 200.)
BIÊN TẬP
Vì vậy, tôi đoán vấn đề chính của tôi sẽ là: Làm thế nào để biết tên của tệp JAR nơi lớp chính của tôi sống?
Tôi có thể đọc nó bằng cách sử dụng java.util.Zip
.
Cấu trúc của tôi như thế này:
Họ là như thế:
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
Ngay bây giờ tôi có thể tải ví dụ: "images / image01.png" bằng cách sử dụng:
ImageIO.read(this.getClass().getResource("images/image01.png));
Nhưng chỉ vì tôi biết tên tệp, phần còn lại tôi phải tải chúng động.