
software.coley.llzip.format.read.NaiveLocalFileZipReaderStrategy Maven / Gradle / Ivy
package software.coley.llzip.format.read;
import software.coley.llzip.format.ZipPatterns;
import software.coley.llzip.format.model.LocalFileHeader;
import software.coley.llzip.format.model.ZipArchive;
import software.coley.llzip.util.ByteData;
import software.coley.llzip.util.ByteDataUtil;
import java.io.IOException;
/**
* A naive strategy that only looks for {@link LocalFileHeader} entries.
*
* @author Matt Coley
*/
public class NaiveLocalFileZipReaderStrategy implements ZipReaderStrategy {
@Override
public void read(ZipArchive zip, ByteData data) throws IOException {
long localFileOffset = -1;
while ((localFileOffset = ByteDataUtil.indexOfQuad(data, localFileOffset + 1, ZipPatterns.LOCAL_FILE_HEADER_QUAD)) >= 0) {
LocalFileHeader file = new LocalFileHeader();
file.read(data, localFileOffset);
zip.getParts().add(file);
postProcessLocalFileHeader(file);
file.freeze();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy