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 boolean
canSkipExtendedLocalFileHeader
private java.util.zip.CRC32
crc32
private DecompressedInputStream
decompressedInputStream
private byte[]
endOfEntryBuffer
private boolean
entryEOFReached
private HeaderReader
headerReader
private java.io.PushbackInputStream
inputStream
private LocalFileHeader
localFileHeader
private char[]
password
private PasswordCallback
passwordCallback
private boolean
streamClosed
private Zip4jConfig
zip4jConfig
-
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)
private
ZipInputStream(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 void
assertStreamOpen()
int
available()
private boolean
checkIfZip64ExtraDataRecordPresentInLFH(java.util.List<ExtraDataRecord> extraDataRecords)
void
close()
private void
endOfCompressedDataReached()
private int
getAesEncryptionHeaderSize(AESExtraDataRecord aesExtraDataRecord)
private long
getCompressedSize(LocalFileHeader localFileHeader)
private int
getEncryptionHeaderSize(LocalFileHeader localFileHeader)
LocalFileHeader
getNextEntry()
LocalFileHeader
getNextEntry(FileHeader fileHeader, boolean readUntilEndOfCurrentEntryIfOpen)
private CipherInputStream<?>
initializeCipherInputStream(ZipEntryInputStream zipEntryInputStream, LocalFileHeader localFileHeader)
private DecompressedInputStream
initializeDecompressorForThisEntry(CipherInputStream<?> cipherInputStream, LocalFileHeader localFileHeader)
private DecompressedInputStream
initializeEntryInputStream(LocalFileHeader localFileHeader)
private boolean
isEncryptionMethodZipStandard(LocalFileHeader localFileHeader)
private boolean
isEntryDirectory(java.lang.String entryName)
int
read()
int
read(byte[] b)
int
read(byte[] b, int off, int len)
private void
readExtendedLocalFileHeaderIfPresent()
private void
readUntilEndOfEntry()
private void
resetFields()
void
setPassword(char[] password)
Sets the password for the inputstream.private void
verifyCrc()
private void
verifyLocalFileHeader(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:
read
in classjava.io.InputStream
- Throws:
java.io.IOException
-
read
public int read(byte[] b) throws java.io.IOException
- Overrides:
read
in classjava.io.InputStream
- Throws:
java.io.IOException
-
read
public int read(byte[] b, int off, int len) throws java.io.IOException
- Overrides:
read
in classjava.io.InputStream
- Throws:
java.io.IOException
-
close
public void close() throws java.io.IOException
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Overrides:
close
in classjava.io.InputStream
- Throws:
java.io.IOException
-
available
public int available() throws java.io.IOException
- Overrides:
available
in 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
-
-