Package net.lingala.zip4j.io.inputstream
Class ZipInputStream
- java.lang.Object
-
- java.io.InputStream
-
- net.lingala.zip4j.io.inputstream.ZipInputStream
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable
public class ZipInputStream extends java.io.InputStream
-
-
Field Summary
Fields Modifier and Type Field Description private booleancanSkipExtendedLocalFileHeaderprivate java.util.zip.CRC32crc32private DecompressedInputStreamdecompressedInputStreamprivate byte[]endOfEntryBufferprivate booleanentryEOFReachedprivate HeaderReaderheaderReaderprivate java.io.PushbackInputStreaminputStreamprivate LocalFileHeaderlocalFileHeaderprivate char[]passwordprivate PasswordCallbackpasswordCallbackprivate booleanstreamClosedprivate Zip4jConfigzip4jConfig
-
Constructor Summary
Constructors Modifier Constructor Description ZipInputStream(java.io.InputStream inputStream)ZipInputStream(java.io.InputStream inputStream, char[] password)ZipInputStream(java.io.InputStream inputStream, char[] password, java.nio.charset.Charset charset)ZipInputStream(java.io.InputStream inputStream, char[] password, Zip4jConfig zip4jConfig)privateZipInputStream(java.io.InputStream inputStream, char[] password, PasswordCallback passwordCallback, Zip4jConfig zip4jConfig)ZipInputStream(java.io.InputStream inputStream, java.nio.charset.Charset charset)ZipInputStream(java.io.InputStream inputStream, PasswordCallback passwordCallback)ZipInputStream(java.io.InputStream inputStream, PasswordCallback passwordCallback, java.nio.charset.Charset charset)ZipInputStream(java.io.InputStream inputStream, PasswordCallback passwordCallback, Zip4jConfig zip4jConfig)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidassertStreamOpen()intavailable()private booleancheckIfZip64ExtraDataRecordPresentInLFH(java.util.List<ExtraDataRecord> extraDataRecords)voidclose()private voidendOfCompressedDataReached()private intgetAesEncryptionHeaderSize(AESExtraDataRecord aesExtraDataRecord)private longgetCompressedSize(LocalFileHeader localFileHeader)private intgetEncryptionHeaderSize(LocalFileHeader localFileHeader)LocalFileHeadergetNextEntry()LocalFileHeadergetNextEntry(FileHeader fileHeader, boolean readUntilEndOfCurrentEntryIfOpen)private CipherInputStream<?>initializeCipherInputStream(ZipEntryInputStream zipEntryInputStream, LocalFileHeader localFileHeader)private DecompressedInputStreaminitializeDecompressorForThisEntry(CipherInputStream<?> cipherInputStream, LocalFileHeader localFileHeader)private DecompressedInputStreaminitializeEntryInputStream(LocalFileHeader localFileHeader)private booleanisEncryptionMethodZipStandard(LocalFileHeader localFileHeader)private booleanisEntryDirectory(java.lang.String entryName)intread()intread(byte[] b)intread(byte[] b, int off, int len)private voidreadExtendedLocalFileHeaderIfPresent()private voidreadUntilEndOfEntry()private voidresetFields()voidsetPassword(char[] password)Sets the password for the inputstream.private voidverifyCrc()private voidverifyLocalFileHeader(LocalFileHeader localFileHeader)
-
-
-
Field Detail
-
inputStream
private java.io.PushbackInputStream inputStream
-
decompressedInputStream
private DecompressedInputStream decompressedInputStream
-
headerReader
private HeaderReader headerReader
-
password
private char[] password
-
passwordCallback
private PasswordCallback passwordCallback
-
localFileHeader
private LocalFileHeader localFileHeader
-
crc32
private java.util.zip.CRC32 crc32
-
endOfEntryBuffer
private byte[] endOfEntryBuffer
-
canSkipExtendedLocalFileHeader
private boolean canSkipExtendedLocalFileHeader
-
zip4jConfig
private Zip4jConfig zip4jConfig
-
streamClosed
private boolean streamClosed
-
entryEOFReached
private boolean entryEOFReached
-
-
Constructor Detail
-
ZipInputStream
public ZipInputStream(java.io.InputStream inputStream)
-
ZipInputStream
public ZipInputStream(java.io.InputStream inputStream, java.nio.charset.Charset charset)
-
ZipInputStream
public ZipInputStream(java.io.InputStream inputStream, char[] password)
-
ZipInputStream
public ZipInputStream(java.io.InputStream inputStream, PasswordCallback passwordCallback)
-
ZipInputStream
public ZipInputStream(java.io.InputStream inputStream, char[] password, java.nio.charset.Charset charset)
-
ZipInputStream
public ZipInputStream(java.io.InputStream inputStream, PasswordCallback passwordCallback, java.nio.charset.Charset charset)
-
ZipInputStream
public ZipInputStream(java.io.InputStream inputStream, char[] password, Zip4jConfig zip4jConfig)
-
ZipInputStream
public ZipInputStream(java.io.InputStream inputStream, PasswordCallback passwordCallback, Zip4jConfig zip4jConfig)
-
ZipInputStream
private ZipInputStream(java.io.InputStream inputStream, char[] password, PasswordCallback passwordCallback, Zip4jConfig zip4jConfig)
-
-
Method Detail
-
getNextEntry
public LocalFileHeader getNextEntry() throws java.io.IOException
- Throws:
java.io.IOException
-
getNextEntry
public LocalFileHeader getNextEntry(FileHeader fileHeader, boolean readUntilEndOfCurrentEntryIfOpen) throws java.io.IOException
- Throws:
java.io.IOException
-
read
public int read() throws java.io.IOException- Specified by:
readin classjava.io.InputStream- Throws:
java.io.IOException
-
read
public int read(byte[] b) throws java.io.IOException- Overrides:
readin classjava.io.InputStream- Throws:
java.io.IOException
-
read
public int read(byte[] b, int off, int len) throws java.io.IOException- Overrides:
readin classjava.io.InputStream- Throws:
java.io.IOException
-
close
public void close() throws java.io.IOException- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Overrides:
closein classjava.io.InputStream- Throws:
java.io.IOException
-
available
public int available() throws java.io.IOException- Overrides:
availablein classjava.io.InputStream- Throws:
java.io.IOException
-
setPassword
public void setPassword(char[] password)
Sets the password for the inputstream. This password will be used for any subsequent encrypted entries that will be read from this stream. If this method is called when an entry is being read, it has no effect on the read action of the current entry, and the password will take effect from any subsequent entry reads.- Parameters:
password- Password to be used for reading of entries from the zip input stream
-
endOfCompressedDataReached
private void endOfCompressedDataReached() throws java.io.IOException- Throws:
java.io.IOException
-
initializeEntryInputStream
private DecompressedInputStream initializeEntryInputStream(LocalFileHeader localFileHeader) throws java.io.IOException
- Throws:
java.io.IOException
-
initializeCipherInputStream
private CipherInputStream<?> initializeCipherInputStream(ZipEntryInputStream zipEntryInputStream, LocalFileHeader localFileHeader) throws java.io.IOException
- Throws:
java.io.IOException
-
initializeDecompressorForThisEntry
private DecompressedInputStream initializeDecompressorForThisEntry(CipherInputStream<?> cipherInputStream, LocalFileHeader localFileHeader) throws ZipException
- Throws:
ZipException
-
readExtendedLocalFileHeaderIfPresent
private void readExtendedLocalFileHeaderIfPresent() throws java.io.IOException- Throws:
java.io.IOException
-
verifyLocalFileHeader
private void verifyLocalFileHeader(LocalFileHeader localFileHeader) throws java.io.IOException
- Throws:
java.io.IOException
-
checkIfZip64ExtraDataRecordPresentInLFH
private boolean checkIfZip64ExtraDataRecordPresentInLFH(java.util.List<ExtraDataRecord> extraDataRecords)
-
verifyCrc
private void verifyCrc() throws java.io.IOException- Throws:
java.io.IOException
-
resetFields
private void resetFields()
-
isEntryDirectory
private boolean isEntryDirectory(java.lang.String entryName)
-
getCompressedSize
private long getCompressedSize(LocalFileHeader localFileHeader) throws ZipException
- Throws:
ZipException
-
getEncryptionHeaderSize
private int getEncryptionHeaderSize(LocalFileHeader localFileHeader) throws ZipException
- Throws:
ZipException
-
readUntilEndOfEntry
private void readUntilEndOfEntry() throws java.io.IOException- Throws:
java.io.IOException
-
getAesEncryptionHeaderSize
private int getAesEncryptionHeaderSize(AESExtraDataRecord aesExtraDataRecord) throws ZipException
- Throws:
ZipException
-
isEncryptionMethodZipStandard
private boolean isEncryptionMethodZipStandard(LocalFileHeader localFileHeader)
-
assertStreamOpen
private void assertStreamOpen() throws java.io.IOException- Throws:
java.io.IOException
-
-