descargar - crear.zip carpeta java
Separadores de archivos de nombre de ruta de ZipEntry? (2)
El separador de archivos depende de la aplicación que crea el archivo zip. Algunas aplicaciones usan el separador de archivos del sistema, mientras que otras usan la barra inclinada "civilizada" / ". Por lo tanto, si está creando el archivo zip y luego lo está consumiendo, simplemente puede usar una barra inclinada como separador de archivo. Si el archivo zip se crea en otro lugar, debe averiguar qué separador se usó. No conozco una forma sencilla, pero puede usar un método brutal y revisar ambos tipos de separadores a medida que avanza.
Algunas aplicaciones, especialmente los códigos de creación zip personalizados, pueden mezclar los separadores en diferentes entradas zip, así que no olvides revisar cada entrada.
Las entradas ZIP almacenan el nombre de ruta completo de la entrada porque (estoy seguro de la siguiente parte) el archivo ZIP no está organizado como directorios. Los metadatos contienen información sobre cómo se deben almacenar los archivos (dentro de los directorios).
Si creo un archivo ZIP en Windows, cuando descomprimo los datos en otro sistema operativo, p. Ej. Mac OS X, la estructura del archivo permanece como solía estar en Windows. ¿Esto se debe a que el descompresor está diseñado para manejar esto, o se debe a que los separadores de archivos dentro del ZIP son estándar?
Lo pregunto porque estoy tratando de encontrar una entrada dentro de un archivo ZIP usando el nombre del archivo comprimido. Pero, ¿qué separador de archivos debo usar para que funcione en otros sistemas que no sean Windows?
Estoy usando Java, y el método: .getName()
de ZipEntry
me da la ruta usando el separador de archivos de Windows /
. ¿Sería suficiente si utilizara el separador java File.separator
para que funcione en otro sistema operativo? ¿O tendré que intentar encontrar mi archivo con cada posible separador?
La especificación del archivo .zip establece:
4.4.17.1 El nombre del archivo, con ruta relativa opcional. La ruta almacenada NO DEBE contener una unidad o letra de dispositivo, ni una barra diagonal inicial. Todas las barras diagonales DEBEN ser barras diagonales "/" en lugar de barras diagonales "/" para la compatibilidad con los sistemas de archivos Amiga y UNIX, etc. Si la entrada proviene de una entrada estándar, no hay un campo de nombre de archivo.