2011-03-14 70 views
13

假設文件名是在這個網址:如何在JAR中檢查JAR文件和特定文件的存在?

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

此操作導致IOException如果沒有foo.jar或有現有的罐子裏面沒有file.txt

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

是否有可能驗證文件存在無例外捕捉?

回答

11

您可以使用java.util.jar.JarFile class,並使用getJarEntry方法查看文件是否存在。

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並自行搜索jar。然後你可以自己檢查罐子。我想它不會比你的方式更快,也不會更容易理解,所以你爲什麼要避免異常?

我在使用異常時看不到錯誤。

+0

異常有太多原因。捕獲'java.io.IOException'會將每個I/O問題轉換爲JAR中'file.txt'不存在的信號。不是一個合理的判斷,是吧? – yegor256

+0

是的,我同意如果你可以在jar中處理file.txt的缺失,以及其他jar-problems的不同,可以有所作爲。 –

相關問題