MCPcopy Create free account
hub / github.com/L-JINBIN/ApkDataMultiplexing / readEntries

Method readEntries

src/bin/zip/ZipFile.java:47–130  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

45 }
46
47 private void readEntries() throws IOException {
48 EocdRecord eocdRecord = readEocdRecord();
49 if (eocdRecord == null) {
50 throw new IOException("EOCD not found");
51 }
52 List<ZipEntry> list = new ArrayList<>();
53 boolean zip64 = eocdRecord.zip64;
54 _seek(eocdRecord.centralDirOffset);
55 while (_readInt() == CFH_SIG) {
56 ZipEntry ze = new ZipEntry();
57 int versionMadeBy = _readUShort();
58 ze.setPlatform((versionMadeBy >> 8) & 0xF);
59
60 _readUShort(); // skip version info
61
62 ze.setGeneralPurposeFlag(_readUShort());
63 ze.setMethod(_readUShort());
64 ze.setTime(ZipUtil.dosToJavaTime(_readUInt()));
65 ze.setCrc(_readInt());
66
67 ze.setCompressedSize(_readUInt());
68 ze.setSize(_readUInt());
69
70 int fileNameLen = _readUShort();
71 int extraLen = _readUShort();
72 int commentLen = _readUShort();
73
74 _readUShort(); // disk number
75
76 ze.setInternalAttributes(_readUShort());
77 ze.setExternalAttributes(_readInt());
78
79 ze.setHeaderOffset(_readUInt());
80
81 ze.setNameData(_readBytes(fileNameLen));
82
83 if (extraLen > 0) {
84 if (zip64)
85 ze.setupZip64WithCenterDirectoryExtra(_readBytes(extraLen));
86 else
87 _skip(extraLen);
88 }
89
90 if (commentLen > 0) {
91 try {
92 byte[] comment = _readBytes(commentLen);
93 ze.setCommentData(comment);
94 } catch (IOException ignored) {
95 }
96 }
97
98 list.add(ze);
99 }
100
101 //noinspection Java8ListSort,ComparatorCombinators
102 Collections.sort(list, (e1, e2) -> Long.compare(e1.getHeaderOffset(), e2.getHeaderOffset()));
103 Set<String> ok = new HashSet<>(list.size());
104

Callers 1

ZipFileMethod · 0.95

Calls 15

readEocdRecordMethod · 0.95
_seekMethod · 0.95
_readIntMethod · 0.95
_readUShortMethod · 0.95
setPlatformMethod · 0.95
setGeneralPurposeFlagMethod · 0.95
setMethodMethod · 0.95
setTimeMethod · 0.95
dosToJavaTimeMethod · 0.95
_readUIntMethod · 0.95
setCrcMethod · 0.95
setCompressedSizeMethod · 0.95

Tested by

no test coverage detected