InputStream.read(byte [])如何工作?

时间:2016-10-20 03:54:37

标签: java fileinputstream zipinputstream

我试图解压缩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();
      }

我确实阅读了该文档,但我发现它令人困惑,请帮助。

1 个答案:

答案 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)是一个表达式,其值是赋给变量的值。

阅读流是一种常用这种习语的情况。值得记住它。