আমার কাছে এই কোডটি রয়েছে যা একটি ডিরেক্টরি থেকে সমস্ত ফাইল পড়ে।
File textFolder = new File("text_directory");
File [] texFiles = textFolder.listFiles( new FileFilter() {
public boolean accept( File file ) {
return file.getName().endsWith(".txt");
}
});
এটি দুর্দান্ত কাজ করে। ডিরেক্টরিটি "টেক্সট_ডাইরেক্টরি" থেকে ".txt" দিয়ে শেষ হওয়া সমস্ত ফাইল এটি অ্যারে পূরণ করে।
আমি কীভাবে কোনও JAR ফাইলের মধ্যে একটি অনুরূপ ফ্যাশনে ডিরেক্টরিগুলির বিষয়বস্তু পড়তে পারি ?
সুতরাং আমি যা করতে চাই তা হ'ল আমার জেআর ফাইলের ভিতরে থাকা সমস্ত চিত্রের তালিকা করা, যাতে আমি এগুলি লোড করতে পারি:
ImageIO.read(this.getClass().getResource("CompanyLogo.png"));
(এটি একটি কাজ করে কারণ "CompanyLogo" "হার্ডকোডযুক্ত" তবে জেআর ফাইলের অভ্যন্তরে চিত্রগুলির সংখ্যা 10 থেকে 200 ভেরিয়েবলের দৈর্ঘ্য হতে পারে))
সম্পাদনা
সুতরাং আমি অনুমান করি যে আমার মূল সমস্যাটি হ'ল: আমার প্রধান শ্রেণি যেখানে থাকে সেই জেআর ফাইলটির নাম কীভাবে জানব ?
মঞ্জরি আমি ব্যবহার করে এটি পড়তে পারে 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
এখনই উদাহরণস্বরূপ "চিত্রগুলি / চিত্র01.png" ব্যবহার করে লোড করতে সক্ষম হচ্ছি:
ImageIO.read(this.getClass().getResource("images/image01.png));
তবে কেবলমাত্র আমি ফাইলের নাম জানি কারণ, বাকিগুলির জন্য আমাকে এগুলি গতিশীলভাবে লোড করতে হবে।