帮我翻译使用字节的Java代码到jython代码
问题描述:
如何将此代码转换为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()
答
下面是函数的精确转换(除,像你的情况下,使用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
答
这不是你的问题的答案,而是相关的。这里是一个CPython的版本:
from zipfile import ZipFile, ZIP_DEFLATED
def test(file):
ZipFile(file+".zip", "w", ZIP_DEFLATED).write(file)
答
不要不保证它是封闭使用的ZipFile:
with ZipFile('spam.zip', 'w') as myzip:
myzip.write('eggs.txt')
为什么当你无论如何使用它一大块在一个时间缓冲的流? – 2008-11-26 13:08:10