Package com.itextpdf.commons.utils
Class ZipFileReader
- java.lang.Object
-
- com.itextpdf.commons.utils.ZipFileReader
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable
public class ZipFileReader extends java.lang.Object implements java.io.CloseableAllows reading entries from a zip file.
-
-
Field Summary
Fields Modifier and Type Field Description private static org.slf4j.LoggerLOGGERprivate intthresholdEntriesprivate doublethresholdRatioprivate intthresholdSizeprivate java.util.zip.ZipFilezipFile
-
Constructor Summary
Constructors Constructor Description ZipFileReader(java.lang.String archivePath)Creates an instance for zip file reading.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()java.util.Set<java.lang.String>getFileNames()Get all file entries paths inside the reading zip file.java.io.InputStreamreadFromZip(java.lang.String fileName)Read single file from zip.voidsetThresholdEntries(int thresholdEntries)Sets the maximum number of file entries in the archive to prevent a Zip Bomb Attack.voidsetThresholdRatio(double thresholdRatio)Sets the maximum ratio between compressed and uncompressed data to prevent a Zip Bomb Attack.voidsetThresholdSize(int thresholdSize)Sets the maximum total uncompressed data size to prevent a Zip Bomb Attack.
-
-
-
Method Detail
-
getFileNames
public java.util.Set<java.lang.String> getFileNames() throws java.io.IOExceptionGet all file entries paths inside the reading zip file.- Returns:
- the
Setof all file entries paths - Throws:
java.io.IOException- if some I/O exception occurs
-
readFromZip
public java.io.InputStream readFromZip(java.lang.String fileName) throws java.io.IOExceptionRead single file from zip.- Parameters:
fileName- the file path inside zip to read- Returns:
- the
InputStreamrepresents read file content - Throws:
java.io.IOException- if some I/O exception occurs
-
setThresholdSize
public void setThresholdSize(int thresholdSize)
Sets the maximum total uncompressed data size to prevent a Zip Bomb Attack. Default value is 1 GB (1000000000).- Parameters:
thresholdSize- the threshold for maximum total size of the uncompressed data
-
setThresholdEntries
public void setThresholdEntries(int thresholdEntries)
Sets the maximum number of file entries in the archive to prevent a Zip Bomb Attack. Default value is 10000.- Parameters:
thresholdEntries- maximum number of file entries in the archive
-
setThresholdRatio
public void setThresholdRatio(double thresholdRatio)
Sets the maximum ratio between compressed and uncompressed data to prevent a Zip Bomb Attack. In general the data compression ratio for most of the legit archives is 1 to 3. Default value is 10.- Parameters:
thresholdRatio- maximum ratio between compressed and uncompressed data
-
close
public void close() throws java.io.IOException- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Throws:
java.io.IOException
-
-