Java: falta el atributo `A` Archive al crear zip mediante programación

Estamos tratando con las bibliotecas / utilidades de descompresión que utilizan atributos para verificar la presencia de directorios / archivos dentro del zip.

El problema es que no podemos establecer el bit de archivo para un archivo zip durante la creación. Cuando creamos zip mediante programación, también elimina los atributos anteriores.

Intentaremos establecer el bit de archivo con los pasos mencionados a continuación, pero hasta ahora no obtenemos el resultado deseado:

1. Parse each zip entry and getExtra byte[].
2. Use Int value=32 and perform bitwise 'OR' operation.
3. setExtra byte[] after 'OR' operation.

Añadiendo algunos detalles más: Intentamos seguir los enfoques, pero este problema aún no está resuelto.

UtilizandosetAttribute() método en el sistema de archivos, pero obtener los atributos se restablecen al crear zip.Files.setAttribute(file, “dos:archive”, true)

UtilizandoFile.copy() que copia los atributos de archivo asociados con el archivo en el archivo de destino pero sin éxito. Incluso los atributos existentes no se retienen en el archivo de destino.Files.copy(path, path, StandardCopyOption.COPY_ATTRIBUTES)

UtilizandoZipEntry.setExtra(byte[]). encontramos cierta información en línea de que Java no tiene ningún método directo para establecer atributos, pero según algunos artículos en línea encontramos que el campo adicional se usa para establecer los permisos de archivo en los atributos de archivo de Unix y MS DOS. Este es un campo no documentado y no encontramos ninguna información confiable en línea. Básicamente, los 2 bytes iniciales se usan para Unix y los últimos 2 bytes para los atributos del archivo DOS. Intentamos establecer los atributos del archivo DOS con diferentes valores.ZipEntry.setExtra(byte[]) - Establece los datos de campo adicionales opcionales para la entrada.

Usando la herramienta de línea de comandos winzip pero no una solución elegante.

Respuestas a la pregunta(1)

Su respuesta a la pregunta