Tengo un servidor escrito en Java que, en una sola solicitud, obtiene un archivo completo del cliente. El archivo se pasa al servidor como una lista de bytes y finalmente se representa en el servidor java como una matriz de bytes.

¿Hay alguna forma estándar / biblioteca estándar que pueda decir si un archivo representado por una matriz de bytes es un archivo zip válido?

0
SomethingSomething 19 oct. 2017 a las 17:10

3 respuestas

La mejor respuesta

Los archivos generalmente se identifican usando números mágicos al comienzo del archivo.

Para hacer una conjetura sobre un archivo dado, Java tiene un método incorporado para detectar algunos tipos de archivos: Files.probeContentType. Además, hay varias bibliotecas de terceros: simplemagic o Apache Tika (que admite más que solo números mágicos).

Pero la detección de contenido por sí sola no le dirá si el archivo es válido . Para eso, necesitaría algo que realmente sepa leer archivos Zip, como ZipFile.

2
Malt 19 oct. 2017 a las 14:32

Si desea implementar de manera estándar para este proceso, puede usar la API de serialización. Para ello use los siguientes artículos que me encontré mientras buscaba sobre este tema.

Artículo 1 - javaworld
Artículo 2 - developer.com

0
YMA 19 oct. 2017 a las 14:25

Consulte Zip4j biblioteca. Es realmente fácil de usar y la clase ZipFile tiene un método isValidZipFile()

0
alseether 11 may. 2018 a las 08:28