A continuación se muestra un ejemplo completo con todas las funcionalidades del paquete zipfile. Como es un ejemplo de lectura, se supondrá que ya se tienen creados los ficheros txt.txt, img.gif y pdf.pdf en el path C:\workspace\webstudio-runtime\test\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 Ejemplos
Copy
<xsql-script name='zipFile'> <body> <set name='m_path'>C:\workspace\webstudio-runtime\test\zipfile</set> <array name='a_names'> <string>txt.txt</string> <string>img.gif</string> <string>pdf.pdf</string> </array> <!-- Generates a ZIP File --> <println /> <println /> <println>Generating ZIP file...</println> <set name='m_zout'> <zipfile.getZipOutputStream> <file name='${m_path}\test.zip' type='absolute' /> </zipfile.getZipOutputStream> </set> <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}' type='absolute' /> </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}\test.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> basename: <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: <byte.length><zipentry.getBytes><m_zipfile/><m_entry /></zipentry.getBytes></byte.length></println> </do> </iterator> <println/> <println/> </body> </xsql-script>
El resultado de la ejecución del ejemplo sería el siguiente:
Copy
Starting XSQL Script Runner with catalina.home=C:\workspace\webstudio-runtime\etc\..\ WebStudio JavaAgent: call premain instrumentation for class SizeOfJavaObject Running script................: zipfile Generating ZIP file... ZipOutputStream created File added : txt.txt Bytes written: 5 File added : img.gif Bytes written: 43 File added : pdf.pdf Bytes written: 3151 ZipOutputStream closed Reading ZIP file... Entry name: txt.txt basename: txt size : 5 time : 1412941282000 is dir : false Bytes read: 5 Entry name: img.gif basename: img size : 43 time : 1412941282000 is dir : false Bytes read: 43 Entry name: pdf.pdf basename: pdf size : 3151 time : 1412941282000 is dir : false Bytes read: 3151 Program returned..............: <void> Execution completed...........: 0.096 secs. C:\workspace\webstudio-runtime>