Al igual que en el ejemplo anterior, a continuación se muestra un ejemplo completo con todas las funcionalidades del paquete zipfile:
- Crear un nuevo fichero ZIP.
- Añadir entradas a este fichero.
- Extraer las entradas del fichero ZIP.
- Mostrar información de cada una de las entradas.
1 Creación de archivos absolutos
Copy
<xsql-script name='zipentry_generation_absolute'> <body> <set name='m_path'>c:\tmp</set> <set name='m_textfile'> <string><m_path /><file.separator />primerFichero.txt</string> </set> <set name='m_imgfile'> <string><m_path /><file.separator />segundoFichero.txt</string> </set> <set name='m_pdffile'> <string><m_path /><file.separator />tercerFichero.txt</string> </set> <file.bytes.write> <file name='#m_textfile' type='absolute' /> <string.getBytes>Esto es un fichero de texto</string.getBytes> </file.bytes.write> <file.bytes.write> <file name='#m_imgfile' type='absolute' /> <string.getBytes>Esto es otro fichero de texto</string.getBytes> </file.bytes.write> <file.bytes.write> <file name='#m_pdffile' type='absolute' /> <string.getBytes>Esto es un tercer fichero de texto</string.getBytes> </file.bytes.write> <array name='a_names'> <string>primerFichero.txt</string> <string>segundoFichero.txt</string> <string>tercerFichero.txt</string> </array> <!-- Generates a ZIP File --> <println /> <println /> <println>Generating ZIP file...</println> <set name='m_zout'> <zipfile.getZipOutputStream> <file name='${m_path}\testZip.zip' type='absolute' /> </zipfile.getZipOutputStream> </set> <println>m_path : <m_path/></println> <println>ZipOutputStream created</println> <println/> <!-- Append to the zipOutputStream the files to archive--> <iterator name='fname'> <in> <a_names /> </in> <do> <set name='count'> <zipfile.append name='${fname}'> <m_zout /> <file name='${m_path}\${fname}' /> </zipfile.append> </set> <println>File added : <fname/></println> <println>Bytes written: <count/></println> <println/> </do> </iterator> <!-- Close the zipOutputStream, it's absolutely necessary --> <zipfile.close> <m_zout /> </zipfile.close> <println>ZipOutputStream closed</println> <!-- Read a zip file and iterate across all entries --> <println /><println /> <println>Reading ZIP file...</println> <set name='m_zipfile'> <zipfile> <file name='${m_path}\testZip.zip' type='absolute'></file> </zipfile> </set> <iterator name='m_entry'> <in> <zipfile.getEntries> <m_zipfile /> </zipfile.getEntries> </in> <do> <println/> <println>Entry name: <zipentry.getName><m_entry /></zipentry.getName></println> <println>Base name : <zipentry.getBaseName><m_entry /></zipentry.getBaseName></println> <println> size : <zipentry.getSize><m_entry /></zipentry.getSize></println> <println> time : <zipentry.getTime><m_entry /></zipentry.getTime></println> <println> is dir : <zipentry.isDirectory><m_entry /></zipentry.isDirectory></println> <println>Bytes read: <zipentry.getBytes><m_zipfile/><m_entry /></zipentry.getBytes></println> </do> </iterator> <println/><println/> </body> </xsql-script>
Genera la siguiente salida:
Copy
Generating ZIP file... m_path : c:\tmp ZipOutputStream created File added : primerFichero.txt Bytes written: 27 File added : segundoFichero.txt Bytes written: 29 File added : tercerFichero.txt Bytes written: 34 ZipOutputStream closed Reading ZIP file... Entry name: primerFichero.txt Base name : primerFichero size : 27 time : 1413369966000 is dir : false Bytes read: Esto es un fichero de texto Entry name: segundoFichero.txt Base name : segundoFichero size : 29 time : 1413369966000 is dir : false Bytes read: Esto es otro fichero de texto Entry name: tercerFichero.txt Base name : tercerFichero size : 34 time : 1413369966000 is dir : false Bytes read: Esto es un tercer fichero de texto