InputStream.read(byte[]) 是如何工作的?
How does InputStream.read(byte[]) work?
我正在尝试解压缩一个 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();
}
我确实阅读了文档,但我觉得它很混乱,请帮忙。
I have problem understand how the ZipInputStream.read(byte[])
work.
在 javadocs 中描述了 InputStream.read(bytes[])
:
This code work just fine but i don't know if my file is bigger than the buffer i set how i'll operate.
这就是循环的用途。
while ((len = zipIs.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
它一次读取一个缓冲区,将 len
设置为读取的字节数,直到 read
调用 returns 零(或更少)。每个缓冲区满都使用 len
表示要写入多少字节,然后重复...
while ((a = call()) > 0) {
语法只是利用了这样一个事实,即赋值(例如 (a = call())
)是一个表达式,其值是分配给变量的值。
阅读流是这个成语常用的一种情况。值得记住。
我正在尝试解压缩一个 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();
}
我确实阅读了文档,但我觉得它很混乱,请帮忙。
I have problem understand how the
ZipInputStream.read(byte[])
work.
在 javadocs 中描述了 InputStream.read(bytes[])
:
This code work just fine but i don't know if my file is bigger than the buffer i set how i'll operate.
这就是循环的用途。
while ((len = zipIs.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
它一次读取一个缓冲区,将 len
设置为读取的字节数,直到 read
调用 returns 零(或更少)。每个缓冲区满都使用 len
表示要写入多少字节,然后重复...
while ((a = call()) > 0) {
语法只是利用了这样一个事实,即赋值(例如 (a = call())
)是一个表达式,其值是分配给变量的值。
阅读流是这个成语常用的一种情况。值得记住。