2010-11-18 9 views
5

Estoy trabajando en documentos digitales y firmas digitales y me he topado con un problema.El método JAVA ZipFile entries() no ve los directorios

Entrada: documentX.adoc - archivo zip con archivos y carpetas dentro.

Necesito obtener todo el contenido en el archivo de entrada - una lista de directorios y archivos.

¿Qué hago:

ZipFile adocFile = new ZipFile(documentXFileName); 
ArrayList <String> adocFiles = new ArrayList<String>(); 
Enumeration <? extends ZipEntry> entries; 
entries = adocFile.entries(); 
for (entries = adocFile.entries(); entries.hasMoreElements();) 
{ 
    adocFiles.add(entries.nextElement().getName()); 
} 

He tratado de crear ArrayList < ZipEntry> y añadir ZipEntries en lugar de nombres - aún nada. Tal vez hay alguna otra manera? Lo extraño es, que tiene un método ZipEntry .isDirectory() ...

Gracias por la ayuda, Martin

+0

¿Ha comprobado el archivo zip para asegurarse de que los directorios realmente se crearon en él? – Powerlord

+0

Tu código me parece correcto. Tal vez abra el archivo zip (basado en el nombre de archivo dado) en alguna herramienta zip externa y simplemente verifique si el archivo contiene entradas. Si eso funciona, podría ser un problema con un formato que la implementación de Java no admite, pero realmente no sé ... –

+0

Sí, los directorios están ahí. Puedo navegar por el archivo zip (con Far Manager), veo todos los directorios y puedo extraerlos para ver los directorios. – Brutus

Respuesta

8

Desde el documentation:

se define una entrada de directorio para ser uno cuyo nombre termina con un '/'.

No es necesario almacenar directorios en un archivo ZIP; son entradas opcionales. Es posible almacenar una secuencia de bytes con la ruta foo/bar.txt sin una entrada llamada foo. Las herramientas Zip pueden proporcionar la ilusión de que tales cosas existen dentro del archivo incluso si no lo hacen.

Cuestiones relacionadas