2008-11-21 71 views
2

如何将此代码转换为jython?帮我翻译使用字节的Java代码到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(); 

这是我有什么,但它没有严重

  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() 

参阅本页面信息https://www.acm.org/crossroads/xrds6-3/ovp63.html

+1

为什么当你无论如何使用它一大块在一个时间缓冲的流? – 2008-11-26 13:08:10

回答

4

下面是函数的精确转换(除,像你的情况下,使用bin而不是保留关键字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() 
+0

不错,我从来不知道有关jarray。谢谢克里斯我真的很感激它 – Setori 2008-11-21 08:51:33

+0

我不知道关于jarray,直到你问你的问题。 :-P我在这里找到它:http://www.jython.org/Project/userguide.html – 2008-11-21 09:03:24

1

这不是你的问题的答案,而是相关的。这里是一个CPython的版本:

from zipfile import ZipFile, ZIP_DEFLATED 

def test(file): 
    ZipFile(file+".zip", "w", ZIP_DEFLATED).write(file) 
0

不要不保证它是封闭使用的ZipFile:

with ZipFile('spam.zip', 'w') as myzip: 
    myzip.write('eggs.txt')