2016-03-22 17 views
2

Gelöst, siehe meinen Beitrag unterJava: Wie kopiert man einen Ordner von einem Glas in ein anderes?

Ich möchte Dateien von einem .jar zu einem anderen mit Java kopieren. Aber nicht alle Dateien des Glases sollen kopiert werden. Ich möchte nur einen bestimmten Ordner kopieren, der auch Unterordner enthalten kann. Ich habe bereits den Code von Dateien von einem Gefäß in ein anderes zu kopieren:

public static void copyFiles(final File file) throws IOException { 

    final JarFile targetJar = new JarFile(file); 
    final JarOutputStream output = new JarOutputStream(new FileOutputStream(file)); 

    final JarFile localJar = new JarFile(new File(JarEditor.class.getProtectionDomain().getCodeSource().getLocation().getFile())); 

    // WRAPPER_CONTENT is a String[] which contains all names of the files i want to copy 
    for (final String entryName : StringResource.WRAPPER_CONTENT) { 
     final JarEntry entryToCopy = localJar.getJarEntry(entryName); 
     final JarEntry targetEntry = new JarEntry(entryName); 

     output.putNextEntry(targetEntry); 

     final InputStream input = localJar.getInputStream(entryToCopy); 
     final byte[] buffer = new byte[10240]; 
     int readByte = 0; 
     while ((readByte = input.read(buffer)) >= 0) { 
      output.write(buffer, 0, readByte); 
     } 
    } 

    output.flush(); 
    output.close(); 

    localJar.close(); 
    targetJar.close(); 
} 

Aktuell im Kopieren Sie die Dateien, indem sie durch eine hartcodierte Liste ihrer Namen ausgeführt wird. Aber ich bevorzuge einen flexibleren Weg, damit ich Ressourcen aus meinem Glas hinzufügen und entfernen kann, und es wird immer noch funktionieren. Sie alle haben den gleichen Elternordner im Glas. Also, wie würde ich durch diesen einen Ordner gehen und nur diese Dateien kopieren?

auch vielleicht erwähnenswert, werden alle Dateien, die in der jarfile befinden soll kopiert werden meine Laufzeit herkommt, wie Sie wahrscheinlich von bekam bei meinem Code suchen.

Vielen Dank für Hilfe
Baschdi

Antwort

0

Pech, denke ich. Ich suche schon seit einiger Zeit nach der Lösung und gerade wenn ich diesen Thread erstelle, finde ich die Lösung. Ich überprüfe einfach, ob der Name des Jarentes mit dem Namen des Ordners beginnt, den ich kopieren möchte. Wenn ja, benutze ich den gleichen Weg wie oben, um den Jarentry in das andere Glas zu kopieren. Gelöst

Verwandte Themen