@Override public void uncompress(File source, StreamProcessor processor) throws IOException { try (SevenZFile sevenZFile = new SevenZFile(source)) { SevenZArchiveEntry szae; while (null != (szae = sevenZFile.getNextEntry())) { String originName = szae.getName(); // shadow file or empty file if (szae.getSize() == 0 || originName.indexOf("/.") != -1) { continue; } // apache.common.IOUtils default buffer size final byte[] buffer = new byte[1024 * 4]; sevenZFile.read(buffer); try (ByteArrayInputStream inputStream = new ByteArrayInputStream(buffer)) { processor.process( inputStream, szae.getSize(), originName.substring(originName.lastIndexOf('/') + 1, originName.length())); } } } }