我试图解压缩zip文件夹,我有问题了解ZipInputStream.read(byte[])
是如何工作的。这段代码工作正常,但我不知道我的文件是否比我设置的缓冲区大。
byte[] buffer = new byte[1024];
zipIs = new ZipInputStream(new FileInputStream(FILE_PATH));
while ((entry = zipIs.getNextEntry()) != null) {
String entryName = File.separator + entry.getName();
// Call file input stream
FileOutputStream fos = new FileOutputStream(entryName);
int len;
// Write current entry
while ((len = zipIs.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
}
我确实阅读了该文档,但我发现它令人困惑,请帮助。
答案 0 :(得分:1)
我有问题了解
ZipInputStream.read(byte[])
的工作原理。
InputStream.read(bytes[])
while ((len = zipIs.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
中描述了它。
这段代码工作正常,但我不知道我的文件是否大于我设置的操作缓冲区。
这就是循环的用途。
len
一次读取一个缓冲区,将read
设置为读取的字节数,直到len
调用返回零(或更少)。每个缓冲区已满使用while ((a = call()) > 0) {
写入,以说明要写入多少字节,然后重复...
(a = call())
语法只是利用了一个赋值(例如SlidingMenu menu
)是一个表达式,其值是赋给变量的值。
阅读流是一种常用这种习语的情况。值得记住它。