SORU
15 EYLÜL 2009, Salı


Nasıl bir JAR dosyası içindeki dosyaları listeler?

Bir dizindeki tüm dosyaları okur bu kod var.

    File textFolder = new File("text_directory");

    File [] texFiles = textFolder.listFiles( new FileFilter() {
           public boolean accept( File file ) {
               return file.getName().endsWith(".txt");
           }
    });

Harika çalışıyor. İle biten tüm dosyaları ile bir dizi doldurur "."dizinden "". txt text_directory

Nasıl benzer bir şekilde, bir dizinin içeriğini okuyabilir miyimiçindeJAR dosyası?

Peki ben gerçekten ne yapmak istiyorum, tüm görüntüleri içinde listeye benim JAR dosyası, onlara yük ben

ImageIO.read(this.getClass().getResource("CompanyLogo.png"));

(Bu işe yaradı çünkü "" "" ama JAR dosyası içinde görüntü sayısını 10 200 değişken uzunlukta olabilir.) kodlanmış CompanyLogo

EDİT

Bilmek Nasıl . benim asıl sorun olurdu sanırım: ^strong>JAR dosyasının adıana sınıf benim mi yaşıyor?

Verilen java.util.Zip kullanarak okuyabilirim.

Benim Yapısı böyle

Gibidir:

my.jar!/Main.class
my.jar!/Aux.class
my.jar!/Other.class
my.jar!/images/image01.png
my.jar!/images/image02a.png
my.jar!/images/imwge034.png
my.jar!/images/imagAe01q.png
my.jar!/META-INF/manifest 

Şu an "/image01 görüntüler.örneğin yüklemek mümkün değilim"kullanarak: . png

    ImageIO.read(this.getClass().getResource("images/image01.png));

Ama sadece dosya adını biliyorum çünkü, geri kalan kısmı için onları dinamik olarak yüklemek için var.

CEVAP
15 EYLÜL 2009, Salı


CodeSource src = MyClass.class.getProtectionDomain().getCodeSource();
if (src != null) {
  URL jar = src.getLocation();
  ZipInputStream zip = new ZipInputStream(jar.openStream());
  while(true) {
    ZipEntry e = zip.getNextEntry();
    if (e == null)
      break;
    String name = e.getName():
    if (name.startsWith("path/to/your/dir/")) {
      /* Do something with this entry. */
      ...
    }
  }
} 
else {
  /* Fail... */
}

Java 7, FileSystem KAVANOZ (zip) dosyası oluşturun ve NİO dizin ve mekanizmaları yürüyüş filtreleme ile arama yapmak için kullanın unutmayın. Bu daha kolay Kavanoz işleme kodu yazmak için yapar ve "dizinler. patladı

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • boniver

    boniver

    17 NİSAN 2006
  • Commander Chalkboard

    Commander Ch

    20 Ocak 2014
  • Ryan Billy

    Ryan Billy

    30 EKİM 2006