2016-03-22 20 views
2

Çözüldü, aşağıdaki yazıya bakın:Java: Bir klasör bir kavanozdan diğerine nasıl kopyalanır?

Dosyaları bir .jar'den diğerine java kullanarak kopyalamak istiyorum. Ancak kavanozun tüm dosyaları kopyalanamaz. Sadece alt klasörleri de içerebilen tek bir klasörün kopyalanmasını istiyorum. Zaten başka bir kavanoza dosyaları kopyalamak için kod var:

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(); 
} 

Şu im kopyalama dosyaları isimlerinin bir kodlanmış listesi üzerinden çalıştırarak. Ancak id daha esnek bir yol tercih ediyor, böylece kavanozumdan kaynak ekleyip çıkarabiliyorum ve hala işe yarayacak. Hepsi de kavanozda aynı ana klasöre sahipler. Öyleyse o klasörden nasıl geçebilirim ve sadece bu dosyaları kopyalayabilir miyim?

Ayrıca kopyalanmaya değer tüm dosyalar, koduma bakmaktan aldığım gibi çalışma zamanımın geldiği jütilde yer alır. Yardım için

Teşekkür
Baschdi

cevap

0

sanırım Şanssızlık. Bir süredir çözümü aradım ve bu parçayı oluşturduğumda çözümü bulmayı başardım. Sadece, jarvanın isminin kopyalamak istediğim klasörün adıyla başlayıp başlamadığını kontrol ediyorum. Eğer öyleyse, jarjeri diğer kavanoza kopyalamak için yukarıdaki ile aynı şekilde kullanıyorum. Çözüldü

İlgili konular