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>