Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Mengakses Sumber Terbenam dalam Fail JAR di Java?

Bagaimanakah Saya Boleh Mengakses Sumber Terbenam dalam Fail JAR di Java?

Patricia Arquette
Patricia Arquetteasal
2024-12-13 08:15:12200semak imbas

How Can I Access Resources Embedded within a JAR File in Java?

Mengakses Sumber dalam Fail JAR menggunakan Java

Apabila bekerja dengan fail JAR, mungkin perlu mendapatkan semula laluan ke sumber terbenam. Walau bagaimanapun, percubaan untuk mendapatkan laluan menggunakan teknik seperti:

ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("config/netclient.p").getFile());

mungkin menghasilkan ralat yang menunjukkan bahawa fail yang ditentukan tidak dapat ditemui. Tingkah laku ini wujud dalam struktur fail JAR Java.

Sebab keputusan ini ialah sumber yang terkandung dalam JAR tidak semestinya tersedia sebagai fail individu pada sistem fail. Ia mungkin dimampatkan atau disimpan dalam arkib dengan cara yang menjadikan akses terus kepada sistem fail mustahil.

Selain itu, bergantung pada java.io.Fail untuk akses sumber mungkin bukan pendekatan yang paling cekap atau mudah alih . Sebaliknya, pertimbangkan pilihan berikut:

  • Menggunakan laluan sumber laluan kelas: Tentukan laluan ke sumber sebagai masukan laluan kelas, seperti:
classLoader.getResource("config/netclient.p")

Pendekatan ini menyediakan akses kepada aliran sumber tetapi tidak menyediakan fail laluan.

  • Mengekstrak sumber buat sementara waktu: Jika laluan fail sangat penting, ekstrak sumber ke lokasi sementara menggunakan:
InputStream in = classLoader.getResourceAsStream("config/netclient.p");
FileOutputStream out = new FileOutputStream(new File("tmp/" + fileName));

Ini membolehkan anda mencipta versi fail sumber dalam direktori sementara yang ditetapkan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Sumber Terbenam dalam Fail JAR di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn