2011-03-14 35 views
13

asumir el nombre del archivo se encuentra en la siguiente dirección:¿Cómo verificar la existencia de un archivo JAR y un archivo específico dentro de JAR?

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

Esta operación conduce a IOException si no hay foo.jar o no hay file.txt dentro del tarro existente:

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

¿Es posible validar existencia de archivo sin excepción de captura?

Respuesta

11

Puede utilizar el java.util.jar.JarFile class, y utilizar el método getJarEntry para ver si existe el archivo.

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

Puede examinar CLASSPATH y buscar el recipiente usted mismo. Entonces usted puede inspeccionar el tarro usted mismo. Supongo que no será más rápido que tu camino, ni será más fácil de entender, entonces, ¿por qué quieres evitar la Excepción?

No veo algo mal al usar la excepción.

+0

Las excepciones tienen muchas causas. La captura de 'java.io.IOException' convertirá todos los problemas de E/S a la señal de la ausencia' file.txt' en JAR. No es un juicio razonable, ¿eh? – yegor256

+0

Sí, estoy de acuerdo si puede manejar la ausencia de file.txt en el contenedor y otros problemas de jar de forma diferente, está bien hacer la diferencia. –

Cuestiones relacionadas