Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (101)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (309)
Collections:
Other Resources:
JDK 17 jdk.zipfs.jmod - ZIP FS Module
JDK 17 jdk.zipfs.jmod is the JMOD file for JDK 17 ZIP FS module.
JDK 17 ZIP FS module compiled class files are stored in \fyicenter\jdk-17.0.5\jmods\jdk.zipfs.jmod.
JDK 17 ZIP FS module compiled class files are also linked and stored in the \fyicenter\jdk-17.0.5\lib\modules JImage file.
JDK 17 ZIP FS module source code files are stored in \fyicenter\jdk-17.0.5\lib\src.zip\jdk.zipfs.
You can click and view the content of each source code file in the list below.
✍: FYIcenter
⏎ jdk/nio/zipfs/ZipInfo.java
/* * Copyright (c) 2009, 2019, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package jdk.nio.zipfs; import java.nio.file.Paths; import java.util.Collections; import java.util.Map; import java.util.zip.ZipException; import static jdk.nio.zipfs.ZipConstants.*; import static jdk.nio.zipfs.ZipUtils.dosToJavaTime; import static jdk.nio.zipfs.ZipUtils.unixToJavaTime; import static jdk.nio.zipfs.ZipUtils.winToJavaTime; /** * Print all loc and cen headers of the ZIP file * * @author Xueming Shen */ public class ZipInfo { public static void main(String[] args) throws Throwable { if (args.length < 1) { print("Usage: java ZipInfo zfname"); } else { Map<String, ?> env = Collections.emptyMap(); ZipFileSystem zfs = (ZipFileSystem)(new ZipFileSystemProvider() .newFileSystem(Paths.get(args[0]), env)); byte[] cen = zfs.cen; if (cen == null) { print("zip file is empty%n"); return; } int pos = 0; byte[] buf = new byte[1024]; int no = 1; while (pos + CENHDR < cen.length) { print("----------------#%d--------------------%n", no++); printCEN(cen, pos); // use size CENHDR as the extra bytes to read, just in case the // loc.extra is bigger than the cen.extra, try to avoid to read // twice long len = LOCHDR + CENNAM(cen, pos) + CENEXT(cen, pos) + CENHDR; if (zfs.readFullyAt(buf, 0, len, locoff(cen, pos)) != len) throw new ZipException("read loc header failed"); if (LOCEXT(buf) > CENEXT(cen, pos) + CENHDR) { // have to read the second time; len = LOCHDR + LOCNAM(buf) + LOCEXT(buf); if (zfs.readFullyAt(buf, 0, len, locoff(cen, pos)) != len) throw new ZipException("read loc header failed"); } printLOC(buf); pos += CENHDR + CENNAM(cen, pos) + CENEXT(cen, pos) + CENCOM(cen, pos); } zfs.close(); } } private static void print(String fmt, Object... objs) { System.out.printf(fmt, objs); } private static void printLOC(byte[] loc) { print("%n"); print("[Local File Header]%n"); print(" Signature : %#010x%n", LOCSIG(loc)); if (LOCSIG(loc) != LOCSIG) { print(" Wrong signature!"); return; } print(" Version : %#6x [%d.%d]%n", LOCVER(loc), LOCVER(loc) / 10, LOCVER(loc) % 10); print(" Flag : %#6x%n", LOCFLG(loc)); print(" Method : %#6x%n", LOCHOW(loc)); print(" LastMTime : %#10x [%tc]%n", LOCTIM(loc), dosToJavaTime(LOCTIM(loc))); print(" CRC : %#10x%n", LOCCRC(loc)); print(" CSize : %#10x%n", LOCSIZ(loc)); print(" Size : %#10x%n", LOCLEN(loc)); print(" NameLength : %#6x [%s]%n", LOCNAM(loc), new String(loc, LOCHDR, LOCNAM(loc))); print(" ExtraLength : %#6x%n", LOCEXT(loc)); if (LOCEXT(loc) != 0) printExtra(loc, LOCHDR + LOCNAM(loc), LOCEXT(loc)); } private static void printCEN(byte[] cen, int off) { print("[Central Directory Header]%n"); print(" Signature : %#010x%n", CENSIG(cen, off)); if (CENSIG(cen, off) != CENSIG) { print(" Wrong signature!"); return; } print(" VerMadeby : %#6x [%d, %d.%d]%n", CENVEM(cen, off), (CENVEM(cen, off) >> 8), (CENVEM(cen, off) & 0xff) / 10, (CENVEM(cen, off) & 0xff) % 10); print(" VerExtract : %#6x [%d.%d]%n", CENVER(cen, off), CENVER(cen, off) / 10, CENVER(cen, off) % 10); print(" Flag : %#6x%n", CENFLG(cen, off)); print(" Method : %#6x%n", CENHOW(cen, off)); print(" LastMTime : %#10x [%tc]%n", CENTIM(cen, off), dosToJavaTime(CENTIM(cen, off))); print(" CRC : %#10x%n", CENCRC(cen, off)); print(" CSize : %#10x%n", CENSIZ(cen, off)); print(" Size : %#10x%n", CENLEN(cen, off)); print(" NameLen : %#6x [%s]%n", CENNAM(cen, off), new String(cen, off + CENHDR, CENNAM(cen, off))); print(" ExtraLen : %#6x%n", CENEXT(cen, off)); if (CENEXT(cen, off) != 0) printExtra(cen, off + CENHDR + CENNAM(cen, off), CENEXT(cen, off)); print(" CommentLen : %#6x%n", CENCOM(cen, off)); print(" DiskStart : %#6x%n", CENDSK(cen, off)); print(" Attrs : %#6x%n", CENATT(cen, off)); print(" AttrsEx : %#10x%n", CENATX(cen, off)); print(" LocOff : %#10x%n", CENOFF(cen, off)); } private static long locoff(byte[] cen, int pos) { long locoff = CENOFF(cen, pos); if (locoff == ZIP64_MINVAL) { //ZIP64 int off = pos + CENHDR + CENNAM(cen, pos); int end = off + CENEXT(cen, pos); while (off + 4 < end) { int tag = SH(cen, off); int sz = SH(cen, off + 2); if (tag != EXTID_ZIP64) { off += 4 + sz; continue; } off += 4; if (CENLEN(cen, pos) == ZIP64_MINVAL) off += 8; if (CENSIZ(cen, pos) == ZIP64_MINVAL) off += 8; return LL(cen, off); } // should never be here } return locoff; } private static void printExtra(byte[] extra, int off, int len) { int end = off + len; while (off + 4 <= end) { int tag = SH(extra, off); int sz = SH(extra, off + 2); print(" [tag=0x%04x, sz=%d, data= ", tag, sz); if (off + sz > end) { print(" Error: Invalid extra data, beyond extra length"); break; } off += 4; for (int i = 0; i < sz; i++) print("%02x ", extra[off + i]); print("]%n"); switch (tag) { case EXTID_ZIP64 : print(" ->ZIP64: "); int pos = off; while (pos + 8 <= off + sz) { print(" *0x%x ", LL(extra, pos)); pos += 8; } print("%n"); break; case EXTID_NTFS: print(" ->PKWare NTFS%n"); // 4 bytes reserved if (SH(extra, off + 4) != 0x0001 || SH(extra, off + 6) != 24) print(" Error: Invalid NTFS sub-tag or subsz"); print(" mtime:%tc%n", winToJavaTime(LL(extra, off + 8))); print(" atime:%tc%n", winToJavaTime(LL(extra, off + 16))); print(" ctime:%tc%n", winToJavaTime(LL(extra, off + 24))); break; case EXTID_EXTT: print(" ->Info-ZIP Extended Timestamp: flag=%x%n",extra[off]); pos = off + 1 ; while (pos + 4 <= off + sz) { print(" *%tc%n", unixToJavaTime(LG(extra, pos))); pos += 4; } break; default: print(" ->[tag=%x, size=%d]%n", tag, sz); } off += sz; } } }
⏎ jdk/nio/zipfs/ZipInfo.java
Or download all of them as a single archive file:
File name: jdk.zipfs-17.0.5-src.zip File size: 56454 bytes Release date: 2022-09-13 Download
⇒ FAQ for JDK (Java Development Kit) 17
2022-11-07, 2173👍, 0💬
Popular Posts:
JDK 17 java.xml.jmod is the JMOD file for JDK 17 XML (eXtensible Markup Language) module. JDK 17 XML...
maven-settings-builder-3 .8.6.jaris the JAR file for Apache Maven 3.8.6 Settings Builder module. Apa...
JDK 11 jdk.internal.vm.ci.jmod is the JMOD file for JDK 11 Internal VM CI module. JDK 11 Internal VM...
JDK 11 jdk.jlink.jmod is the JMOD file for JDK 11 JLink tool, which can be invoked by the "jlink" co...
commons-lang-2.6.jar is the JAR file for Apache Commons Lang 2.6, which provides a host of helper ut...