views:

419

answers:

2

how do I translate this code into jython?

     ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(file + ".zip"));
     byte[] buf = new byte[1024];
     int len;
     //Create a new Zip entry with the file's name.
     ZipEntry zipEntry = new ZipEntry(file.toString());
     //Create a buffered input stream out of the file
     //we're trying to add into the Zip archive.
     FileInputStream fin = new FileInputStream(file);
     BufferedInputStream in = new BufferedInputStream(fin);
     zos.putNextEntry(zipEntry);
     //Read bytes from the file and write into the Zip archive.
     while ((len = in.read(buf)) >= 0) {
        zos.write(buf, 0, len);
     }
     //Close the input stream.
     in.close();
     //Close this entry in the Zip stream.
     zos.closeEntry();

this is what I have but it Fails badly

            buf=None                                     <<<< ?
            len=None                                     <<<< ?
            zipEntry=ZipEntry(file.toString()) 
            fin=FileInputStream(file)
            bin=BufferedInputStream(fin)
            self._zos.putNextEntry(zipEntry)
            while (len=bin.helpme_im_dying(buf)) >= 0):  <<<< ?
                self._zos.write(buf,0,len)               <<<< ?
                len = bin.read(buf)                      <<<< ?
            bin.close()
            self._zos.closeEntry()

refer to this page for information https://www.acm.org/crossroads/xrds6-3/ovp63.html

+2  A: 

Here's an exact translation of that function (except, like your case, using bin instead of reserved keyword in).

from jarray import zeros
from java.io import BufferedInputStream, FileInputStream, FileOutputStream
from java.util.zip import ZipEntry, ZipOutputStream

def test(file):
    zos = ZipOutputStream(FileOutputStream(file + ".zip"))
    buf = zeros(1024, 'b')
    zipEntry = ZipEntry(file)
    fin = FileInputStream(file)
    bin = BufferedInputStream(fin)
    zos.putNextEntry(zipEntry)
    len = bin.read(buf)
    while len >= 0:
        zos.write(buf, 0, len)
        len = bin.read(buf)
    bin.close()
    zos.closeEntry()
Chris Jester-Young
nice i never knew about jarray. thank you Chris I really appreciate it
Setori
I didn't know about jarray until you asked your question. :-P I found it here: http://www.jython.org/Project/userguide.html
Chris Jester-Young
+1  A: 

It is not an answer to your question, but related. Here is a CPython version:

from zipfile import ZipFile, ZIP_DEFLATED

def test(file):
    ZipFile(file+".zip", "w", ZIP_DEFLATED).write(file)
J.F. Sebastian
yeah isnt that just great! so smooth
Setori