2011-03-14 6 views
13

は、ファイル名は、このURLであると仮定しますJARファイル内の特定のファイルと特定のファイルの存在を確認する方法は?

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

foo.jarが存在しないか、または既存の瓶の内部には、file.txtが存在しない場合は、この操作はIOExceptionにつながる:

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-problemを別々に扱えるかどうかには同意しますが、違いはあります。 –

関連する問題