在Java

时间:2017-07-17 09:48:15

标签: java

我有以下代码:

public static void unzip(final File archive) throws FileNotFoundException, IOException
{
    ZipInputStream zipInput = null;
    try
    {
        zipInput = new ZipInputStream(new FileInputStream(archive));
        ZipEntry zipEntry = null;
        while ((zipEntry = zipInput.getNextEntry()) != null)
        {
            String ename = zipEntry.getName();
            final int pos = ename.lastIndexOf(File.separatorChar);
            if (pos >= 0)
            {
                ename = ename.substring(pos + 1);
            }
            final FileOutputStream outputFile = new FileOutputStream(archive.getParent() + File.separatorChar + ename);
            int data = 0;
            try
            {
                while ((data = zipInput.read()) != -1)
                {
                    outputFile.write(data);
                }
            }catch (final Exception e)
            {
                LOGGER.error( e);
            }finally
            {
                outputFile.close();
            }

        }

    }catch (final Exception e)
    {
        LOGGER.error("Error when zipping file ( "+archive.getPath()+" )", e);
    }finally
    {
        if(zipInput !=null)
        {
            zipInput.close();
        }
    }
}

我想知道的是,当我从以下行获得值-1时,这是什么意思:

(data = zipInput.read()) != -1

我猜这就是为什么zip文件没有正确解压缩的原因。

1 个答案:

答案 0 :(得分:1)

它是InputStream返回的预期值,没有任何内容可供阅读。

来自InputStream's javadoc

  

返回:
  数据的下一个字节,如果到达流的末尾则为-1。