Rumah >Java >javaTutorial >Bagaimana untuk Mengelakkan Kebiasaan Tanpa Dokumen Apabila Menggunakan JarOutputStream untuk Mencipta Fail JAR?
Mencipta Fail JAR Menggunakan JarOutputStream
Untuk menjana fail JAR secara pengaturcaraan, JarOutputStream sering digunakan. Walau bagaimanapun, adalah penting untuk mengelakkan kebiasaan tertentu yang tidak didokumenkan dalam JarOutputStream:
1. Direktori Berakhir dengan Tanda Slash:
Nama direktori dalam fail JAR mesti berakhir dengan garis miring '/'.
2. Laluan yang menggunakan garis miring ke hadapan:
Gunakan garis miring ke hadapan '/' dalam laluan, berbanding dengan garis miring ke belakang ''.
3. Tiada Tanda Slash Utama dalam Nama Kemasukan:
Nama entri tidak boleh bermula dengan garis miring '/'.
Kod Contoh dengan Pembetulan:
Kod diperbetulkan berikut membina fail JAR yang sah dengan fail manifes:
<code class="java">public void run() throws IOException { Manifest manifest = new Manifest(); manifest.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0"); JarOutputStream target = new JarOutputStream(new FileOutputStream("output.jar"), manifest); add(new File("inputDirectory"), target); target.close(); } private void add(File source, JarOutputStream target) throws IOException { String name = source.getPath().replace("\", "/"); if (source.isDirectory()) { if (!name.endsWith("/")) { name += "/"; } JarEntry entry = new JarEntry(name); entry.setTime(source.lastModified()); target.putNextEntry(entry); target.closeEntry(); for (File nestedFile : source.listFiles()) { add(nestedFile, target); } } else { JarEntry entry = new JarEntry(name); entry.setTime(source.lastModified()); target.putNextEntry(entry); try (BufferedInputStream in = new BufferedInputStream(new FileInputStream(source))) { byte[] buffer = new byte[1024]; while (true) { int count = in.read(buffer); if (count == -1) { break; } target.write(buffer, 0, count); } target.closeEntry(); } } }</code>
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Kebiasaan Tanpa Dokumen Apabila Menggunakan JarOutputStream untuk Mencipta Fail JAR?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!