Heim > Java > javaLernprogramm > Hauptteil

Wie vermeide ich undokumentierte Macken bei der Verwendung von JarOutputStream zum Erstellen von JAR-Dateien?

Susan Sarandon
Freigeben: 2024-10-30 08:00:27
Original
216 Leute haben es durchsucht

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

JAR-Dateien mit JarOutputStream erstellen

Um eine JAR-Datei programmgesteuert zu generieren, wird häufig JarOutputStream verwendet. Es ist jedoch wichtig, bestimmte undokumentierte Macken innerhalb von JarOutputStream zu vermeiden:

1. Verzeichnisse, die mit einem Schrägstrich enden:

Verzeichnisnamen in JAR-Dateien müssen mit einem Schrägstrich „/“ enden.

2. Pfade mit Schrägstrichen:

Verwenden Sie Schrägstriche „/“ in Pfaden, im Gegensatz zu Backslashes „“.

3. Keine führenden Schrägstriche in Eintragsnamen:

Eintragsnamen sollten nicht mit einem Schrägstrich „/“ beginnen.

Beispielcode mit Korrekturen:

Der folgende korrigierte Code erstellt eine gültige JAR-Datei mit einer Manifestdatei:

<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>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie vermeide ich undokumentierte Macken bei der Verwendung von JarOutputStream zum Erstellen von JAR-Dateien?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!