All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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