广州凡科互联网科技有限公司

营业时间
MON-SAT 9:00-18:00

全国服务热线
18720358503

公司门店地址
广州市海珠区工业大道北67号凤凰创意园

[Java] 应用ZipInputStream分析zip类文档(jar、docx)的

日期:2021-02-18 浏览:
[Java] 应用ZipInputStream分析zip类文档(jar、docx)的案例,
关注度1 评价 203  网民共享于:  :47 访问数10998次

[Java] 应用ZipInputStream分析zip类文档(jar、docx)的案例,

创作者: zyl910

如今zip类的文档越来越越大了,比如jar、docx。
有时候大家需大批量解决这种文档中的数据信息,若全是手工制作实际操作得话就太不便了。因此考虑到程序编写全自动解决。
Java出示了ZipInputStream等zip的实际操作类。可是一些內容较为抽象性,沒有编码案例得话有点儿无法了解。比如zip中的文件目录到底是啥。
因此我做下个Demo来演试怎样用它来分析zip文档,輸出信息内容。

import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class ZipReadTest {
 public static void main(String[] args) {
 String srcPath = target/classes/static/test.docx 
 try(FileInputStream is = new FileInputStream(srcPath)) {
 run(System.out, is);
 } catch (FileNotFoundException e) {
 e.printStackTrace();
 } catch (IOException e) {
 e.printStackTrace();
 System.out.println( ZipReadTest done. 
 private static void run(PrintStream out, InputStream is) throws IOException {
 try(ZipInputStream zis = new ZipInputStream(is)) {
 ZipEntry zipEntry;
 while ((zipEntry = zis.getNextEntry()) != null) {
 if (null==zipEntry) continue;
 String line = String.format( ZipEntry(%s, isDirectory=%d, size=%d, compressedSize=%d, time=%d, crc=%d, method=%d, comment=%s) ,
 zipEntry.getName(), (zipEntry.isDirectory())?1:0, zipEntry.getSize(), zipEntry.getCompressedSize(), zipEntry.getTime(), zipEntry.getCrc(), zipEntry.getMethod(), zipEntry.getComment());
 out.println(line);
三、检测結果

对一个docx文档开展解决,检测結果以下:

ZipEntry([Content_Types].xml, isDirectory=0, size=1344, compressedSize=354, time=3, crc=, method=8, comment=null)
ZipEntry(docProps/app.xml, isDirectory=0, size=289, compressedSize=183, time=3, crc=, method=8, comment=null)
ZipEntry(docProps/core.xml, isDirectory=0, size=392, compressedSize=220, time=3, crc=, method=8, comment=null)
ZipEntry(word/document.xml, isDirectory=0, size=36724, compressedSize=4017, time=3, crc=, method=8, comment=null)
ZipEntry(word/fontTable.xml, isDirectory=0, size=2120, compressedSize=398, time=3, crc=, method=8, comment=null)
ZipEntry(word/numbering.xml, isDirectory=0, size=2868, compressedSize=502, time=3, crc=, method=8, comment=null)
ZipEntry(word/settings.xml, isDirectory=0, size=815, compressedSize=325, time=3, crc=, method=8, comment=null)
ZipEntry(word/styles.xml, isDirectory=0, size=8628, compressedSize=1319, time=3, crc=, method=8, comment=null)
ZipEntry(_rels/.rels, isDirectory=0, size=588, compressedSize=228, time=3, crc=, method=8, comment=null)
ZipEntry(word/media/image1.emf, isDirectory=0, size=881176, compressedSize=97920, time=3, crc=, method=8, comment=null)
ZipEntry(word/_rels/document.xml.rels, isDirectory=0, size=980, compressedSize=283, time=3, crc=, method=8, comment=null)
ZipReadTest done.

之上便是docx内的文档构造。

平常应用WinZip等文档来查询zip类文档时,是显示信息为树型构造。可是在zip文档中具体上纪录的是相对性相对路径。
zip文档类一般无需纪录文件目录,只纪录相对性相对路径就可以了。
当必须纪录文件目录时,ZipEntry的name以隔开符末尾(如 word/),有关数据信息流为空。

Javadoc《Class ZipInputStream》. javase/8/docs/?java/util/

dengb.TechArticle[Java] 应用ZipInputStream分析zip类文档(jar、docx)的案例, 创作者: zyl910 一、原因 如今zip类的文档越来越越大了,比如jar、docx。 有时候大家需大批量...



网站知识

联系方式丨CONTACT

  • 全国热线:18720358503
  • 传真热线:18720358503
  • Q Q咨询:2639601583
  • 企业邮箱:2639601583@qq.com

首页
电话
短信
联系