Java ZIP API提供了处理ZIP压缩以及解压的方法,但是有一个大的问题,压缩进去的文件解压后就丢失了文件可执行属性。这是部分压缩实现代码:
File d = new File(dir);
if (!d.isDirectory())
throw new IllegalArgumentException("Not a directory: " + dir);
String[] entries = d.list();
byte[] buffer = new byte[4096]; // Create a buffer for copying
int bytesRead;
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipfile));
for (int i = 0; i < entries.length; i++) {
File f = new File(d, entries[i]);
if (f.isDirectory())
continue;
FileInputStream in = new FileInputStream(f);
ZipEntry entry = new ZipEntry(f.getPath());
out.putNextEntry(entry);
while ((bytesRead = in.read(buffer)) != -1)
out.write(buffer, 0, bytesRead);
in.close();
}
out.close();
其实就是一个流的读取,好像没有任何涉及到属性相关的操作。我用这样的代码压缩一些可执行脚本,然后使用unzip或其他程序解压,这些可执行脚本的执行权限就丢失了。
我想了一个办法
如果完全采用我自己程序来作压缩和解压,我可以在压缩的过程中,将文件的权限信息当作ZipEntry的Comment或其他属性设置进去,解压的时候读出来然后设置文件属性,但是这样就只局限于只能用我自己的压缩解压程序来处理。使用别的比如7-zip或WINRAR之类的程序解开就不行了。
不晓得哪位碰到过类似的问题,是否可以给个思路?
---
我想7zip之类的压缩工具是不是也会是在压缩的时候将文件属性记录在某处,然后在解压的时候从那里读出来设定回去?
分享到:
- 2008-01-08 11:02
- 浏览 4206
- 评论(2)
- 论坛回复 / 浏览 (0 / 3941)
- 查看更多
相关推荐
标题“解压zip压缩包中的指定文件(害死人的错误)”暗示了在尝试从ZIP文件中提取特定文件时可能会遇到的问题。这些错误可能源于不正确的编程实践,如资源管理不当、文件路径错误或理解ZIP文件结构的误区。 描述中...
解压“nexus3.27.zip”后,包含Nexus的可执行文件、配置文件和日志文件。通常,通过命令行启动`bin/nexus`脚本来运行Nexus服务。配置文件`conf/nexus.yml`可以自定义Nexus的行为,如端口号、数据存储位置等。 5. *...
- 解压:首先,你需要将"eolinker_os_4.0.zip"解压缩到本地文件系统中。 - 配置环境:根据提供的配置文件,调整服务器设置,包括端口号、服务器地址等,确保与你的环境兼容。 - 启动服务:通过Java命令行或集成...
【压缩包子文件的文件名称列表】: "backup-java-master" 这个文件名表明这是一个Java项目的主目录,很可能包含了源代码、构建文件、配置文件等。用户可能需要解压这个文件,然后在本地环境中编译和运行Java代码,...
标题“nexus-3.20.1-win64(windows 解压版).zip”明确指出这是一个针对Windows平台的Nexus 3.20.1版本的压缩文件,其中包含了64位系统所需的全部内容。这个版本是截至描述时Nexus的最新官方版本,因此对于希望保持...
3. `jd-gui-windows-1.6.6.zip`:这是适用于Windows操作系统的JD-GUI,采用.zip格式,可以直接解压缩运行。 JD-GUI是一款常用的Java反编译工具,它可以打开一个单独的.jar或.class文件,并显示对应的源代码。用户...
【标签】: "双鱼林医院信息管理系统源码.zip" 的标签表明这是一个压缩文件,其中包含了整个系统的源代码,用户需要解压后才能查看和使用。.zip是一种常见的文件压缩格式,用于减少文件占用的磁盘空间,便于存储和...
要使用这个压缩包,首先需要解压"ActiveMQ消息服务器 v5.18.2 [江西新余电信].zip"文件,然后根据提供的文档和示例配置启动服务器。一旦服务器运行,就可以通过输出.txt文件中可能记录的日志信息来监控服务器状态,...
RAR是一种流行的压缩格式,由俄罗斯软件开发者尤里·罗兹努科夫(Yaroslav Zlobin)创建,它提供了比ZIP更高的压缩率,同时支持分卷压缩和恢复记录,以应对文件传输过程中的数据丢失。 【描述】提到的"很好的...
3. **jsymxx3.zip**:这可能是项目的主要源代码压缩包,包含项目的各个组成部分,如Java源代码、配置文件、数据库脚本等。解压后,用户可以查看和研究代码,理解其工作原理,也可以在现有基础上进行修改和扩展。 ...
- 使用解压后的脚本启动 Nexus 服务,例如 `bin/nexus start`,停止服务则使用 `bin/nexus stop`。 - 默认情况下,Nexus 会监听 `http://localhost:8081/nexus`,可以通过浏览器访问管理界面。 3. **仓库类型**:...
在解压"apache-activemq-5.15.2.zip"后,你会得到一个包含bin、conf、lib等目录的结构,其中bin目录包含了启动和停止服务器的脚本,conf目录下有配置文件,如activemq.xml,lib目录则包含了运行所需的各种库文件。...
描述中提到的"Nexus-3.20.1-01-unix.tar.gz"是原始的官方下载文件,它是一个基于Unix的tar归档文件,通常包含解压后的所有Nexus服务文件。由于官方下载困难,可能是通过特殊途径获取并重新压缩为"nexus-3.20.1-011-...
标题 "nexus-3.27.0-03-win64-linux64.zip" 提供的信息表明,这是一个包含 Nexus 3 软件的压缩文件,版本号为 3.27.0-03,同时兼容 Windows 和 Linux 两种操作系统。Nexus 3 是一个流行的软件仓库管理工具,由 ...
1. **解压文件**: 首先,你需要解压缩“apache-activemq-5.15.0-bin2.zip”,这将创建一个包含bin、conf、lib等目录的结构。 2. **启动ActiveMQ**: 在bin目录下,运行相应的启动脚本(如在Windows上是`start.bat`,...
- 解压缩下载的zip文件,然后配置`config/elasticsearch.yml`文件以适应你的环境,如设置网络监听地址、端口和路径。 - 启动Elasticsearch服务,可以使用命令行或者脚本启动。 - 配置安全设置,特别是生产环境中,...
在Windows上,下载如上述的zip文件后,解压缩,将`sqlite3.exe`复制到需要使用它的目录或者系统PATH环境变量包含的路径下,这样就可以在命令行中全局调用`sqlite3`命令。 下面是关于SQLite和`sqlite3.exe`的一些...
而"kafka-console-ui_main.zip"是这个可视化管理平台的主要代码或可执行文件,解压后应该包含前端Vue.js应用和可能的后端服务(如果有的话),用户可以通过这个文件部署到服务器上运行。 关于Kafka可视化管理平台的...
2. `h2-2014-04-05.zip`:这是一个ZIP压缩文件,包含H2数据库的纯Java版本。解压后,用户可以找到数据库引擎的JAR文件,以及其他相关工具,如命令行客户端和配置文件。这种形式适用于那些希望直接在命令行或集成到...
`Jar_Zip`(ch08_jar_zip)可能涉及压缩和解压文件,Android支持处理ZIP和JAR文件,这对于资源打包和分发非常有用。 最后,`Sdcard_Database`(ch08_sdcard_database)可能是指在外部存储(如SD卡)上创建和管理...