Rumah > Java > javaTutorial > Bagaimana untuk Mengelakkan Kebiasaan Tanpa Dokumen Apabila Menggunakan JarOutputStream untuk Mencipta Fail JAR?

Bagaimana untuk Mengelakkan Kebiasaan Tanpa Dokumen Apabila Menggunakan JarOutputStream untuk Mencipta Fail JAR?

Susan Sarandon
Lepaskan: 2024-10-30 08:00:27
asal
285 orang telah melayarinya

How to Avoid Undocumented Quirks When Using JarOutputStream to Create JAR Files?

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan