2011-03-14 12 views
13

Dosya adının bu URL'de bulunduğunu varsayın:JAR dosyasının ve JAR'ın içindeki belirli bir dosyanın varlığını nasıl kontrol edebilirim?

URL file = new URL("jar:file:/path/to/foo.jar!/META-INF/file.txt"); 

Bu işlem foo.jar yoksa veya mevcut jar içinde file.txt yoksa IOException'e yol açar:

import org.apache.commons.io.FileUtils; 
FileUtils.copyURLToFile(file, /* some other file */); 

Dosya doğrulamak mümkün mü istisna olmaksızın varlığını yakalamak?

cevap

11

java.util.jar.JarFile class'u kullanabilir ve dosyanın mevcut olup olmadığını görmek için getJarEntry yöntemini kullanabilirsiniz.

JarFile jar = new JarFile("foo.jar"); 
JarEntry entry = jar.getJarEntry("META-INF/file.txt"); 
if (entry != null) { 
    // META-INF/file.txt exists in foo.jar 
} 
0

CLASSPATH'ı inceleyebilir ve kavanozu kendiniz arayabilirsiniz. Sonra da kavanozu kendiniz inceleyebilirsiniz. Sanırım yolunuzdan daha hızlı olmayacak, ne de anlaşılması daha kolay olmayacak, neden istisnadan kaçınmak istiyorsunuz?

İstisnai kullanırken yanlış bir şey göremiyorum.

+0

İstisnalar çok fazla neden var. 'Java.io.IOException' yakalamak, her I/O problemini JAR'daki 'file.txt 'eksikliğine dönüştürecektir. Makul bir karar değil, ha? – yegor256

+0

Evet, eğer jar içinde dosya.txt yokluğunu ve diğer jar-problemlerini farklı bir şekilde halledebiliyorsan, bir fark yaratmak çok güzel. –

İlgili konular