jdk里面提供了往zip包里添加注释的api方法ZipOutputStream里的setComment,但似乎找不到如何获取zip包里的附加注释的方法,在google里搜了一下,在一个英文网站里发现这个方法,测试可用.
public static String extractZipComment (String filename) {
String retStr = null;
try {
File file = new File(filename);
int fileLen = (int)file.length();
FileInputStream in = new FileInputStream(file);
/* The whole ZIP comment (including the magic byte sequence)
* MUST fit in the buffer
* otherwise, the comment will not be recognized correctly
*
* You can safely increase the buffer size if you like
*/
byte[] buffer = new byte[Math.min(fileLen, 8192)];
int len;
in.skip(fileLen - buffer.length);
if ((len = in.read(buffer)) > 0) {
retStr = getZipCommentFromBuffer (buffer, len);
}
in.close();
} catch (Exception e) {
e.printStackTrace();
}
return retStr;
}
private static String getZipCommentFromBuffer (byte[] buffer, int len) {
byte[] magicDirEnd = {0x50, 0x4b, 0x05, 0x06};
int buffLen = Math.min(buffer.length, len);
//Check the buffer from the end
for (int i = buffLen-magicDirEnd.length-22; i >= 0; i--) {
boolean isMagicStart = true;
for (int k=0; k < magicDirEnd.length; k++) {
if (buffer[i+k] != magicDirEnd[k]) {
isMagicStart = false;
break;
}
}
if (isMagicStart) {
//Magic Start found!
int commentLen = buffer[i+20] + buffer[i+22]*256;
int realLen = buffLen - i - 22;
System.out.println ("ZIP comment found at buffer position " + (i+22) + " with len="+commentLen+", good!");
if (commentLen != realLen) {
System.out.println ("WARNING! ZIP comment size mismatch: directory says len is "+
commentLen+", but file ends after " + realLen + " bytes!");
}
String comment = new String (buffer, i+22, Math.min(commentLen, realLen));
return comment;
}
}
System.out.println ("ERROR! ZIP comment NOT found!");
return null;
}
分享到:
相关推荐
Java手机游戏大富翁源代码+注释.rar Java手机短信项目源码.rar Java扫雷源码.rar Java生成自定义控件源代码.rar Java调色板面板源代码.rar Java跳棋(基于SWT).rar Java通讯录手机版源码.rar Java鼠标拖拽功能.rar ...
在"xmljava.zip"这个压缩包中,我们可以预想它包含了与使用Java处理XML相关的代码示例或项目。 XML的基本结构由元素、属性、文本内容、注释和处理指令组成。元素是XML文档的核心,它们定义了数据的结构。属性用于为...
标题中的"ATM.zip_atm_atm java_zip"暗示了这是一个关于自动取款机(ATM)系统的项目,其中包含了用Java编程语言编写的代码。这个压缩包可能包含两个不同的ATM程序,以及一些附加文档。 描述中的"Deux programes ...
Java 项目中的JAVA002打飞机游戏设计是一个专门为Java编程语言学习者和开发者提供的实际案例。该设计旨在通过一个完整的游戏项目,帮助新手理解Java编程的实际应用。项目内容包括了前后端代码、数据库脚本和软件工具...
注释可以附加在任何元素上,提供对元素功能的解释;操作则代表类的方法,可以包含参数、返回类型和操作体等信息。 最后,UML类图不仅用于设计阶段,还可以在开发过程中持续更新,反映代码的变化。当你修改Java代码...
它利用自定义的运行时注释和Java的反射机制来实现数据验证,这为开发者提供了更加灵活和方便的方式来验证对象属性的正确性。下面将详细阐述这个库的核心概念、工作原理以及如何在实际开发中应用。 1. **核心概念:*...
在本压缩包“java-leetcode题解之第824题山羊拉丁文.zip”中,包含的是关于Java编程语言解决LeetCode算法题目的代码实现,特别是针对第824题“山羊拉丁文”(Goat Latin)的解答。LeetCode是一个在线平台,它提供了...
Java面向对象编程(Object-Oriented Programming,简称OOP)是Java编程的核心概念,它以类和对象为基本单位,通过封装、继承和多态等特性实现代码的复用和模块化。本章上机练习将深入探讨这些关键概念。 1. **封装*...
本文将围绕"eclipse自动获取源码.zip"这一主题,详细讲解如何在Eclipse中实现这个功能,并介绍提供的Java_Source_Attacher_1.2.8.jar工具和使用说明.txt文件。 首先,Eclipse自动获取源码的功能主要通过Javadoc和...
在程序设计过程中,需要遵循良好的编程规范,如合理的变量命名、注释编写、异常处理等,以提高代码的可读性和可维护性。同时,为了保证数据的安全和隐私,还应该考虑到数据加密和用户隐私保护措施。 此外,如果该...
"基于Java的源码-24点游戏逼真图形版代码.zip" 这个标题表明我们正在处理一个使用Java编程语言开发的项目,该项目实现了24点游戏的图形化版本。24点游戏是一种流行的心智游戏,玩家需要利用四张扑克牌上的数字,通过...
由于项目是针对Java学习者和毕业生设计,因此在代码结构、注释和文档编写上可能更加注重教育意义,便于理解和学习。 对于那些在自行运行代码时遇到问题的用户,文档中提到了可以联系作者购买人工远程调试服务,这...
CommentUtils可能提供了添加、删除或获取XML文档中注释的功能,增强了代码的可读性和维护性。 在注册过程中,通常需要验证用户输入的信息,例如检查用户名的唯一性,密码的复杂度等。这些验证规则可以通过Java编写...
【Core Java 课件】是IT教育领域的一份内部资料,涵盖了从面向过程编程到面向对象编程的思维转变,以及Java编程的相关基础知识,包括字节码、虚拟机、环境变量的设置、Java程序的编译与执行,以及包结构和注释的使用...
- Java 6中文版ZIP下载:http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/builds/latest/html_zh_CN.zip 5. 使用JDK进行开发: - 开发者可以利用JDK提供的工具进行程序开发,例如使用`javac`...
“0项目说明.zip”是一个压缩包,它可能包含了关于项目的一些附加说明文件或文档,可能是项目报告、演示视频、额外的设计文档等。这个压缩包是对整个项目文档资料的补充,为了解和评估整个项目提供了更全面的视角。 ...
【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主...