`
liusu
  • 浏览: 171518 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java ZIP API压缩文件解压后,丢失文件权限属性?如何找回?

阅读更多
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之类的压缩工具是不是也会是在压缩的时候将文件属性记录在某处,然后在解压的时候从那里读出来设定回去?
分享到:
评论
2 楼 mm6751 2011-10-28  
zip似乎是通过extra字段保存属性的。
1 楼 Jatula 2008-05-17  
共同进步,留下QQ,我也在搞这块;不过我是先在本地压缩加密,解压用FTP传;

相关推荐

    解压zip压缩包中的指定文件(害死人的错误)

    标题“解压zip压缩包中的指定文件(害死人的错误)”暗示了在尝试从ZIP文件中提取特定文件时可能会遇到的问题。这些错误可能源于不正确的编程实践,如资源管理不当、文件路径错误或理解ZIP文件结构的误区。 描述中...

    nexus3.27.zip的压缩文件包

    解压“nexus3.27.zip”后,包含Nexus的可执行文件、配置文件和日志文件。通常,通过命令行启动`bin/nexus`脚本来运行Nexus服务。配置文件`conf/nexus.yml`可以自定义Nexus的行为,如端口号、数据存储位置等。 5. *...

    eolinker_os_4.0.zip for java

    - 解压:首先,你需要将"eolinker_os_4.0.zip"解压缩到本地文件系统中。 - 配置环境:根据提供的配置文件,调整服务器设置,包括端口号、服务器地址等,确保与你的环境兼容。 - 启动服务:通过Java命令行或集成...

    backup-java-master.zip_tool

    【压缩包子文件的文件名称列表】: "backup-java-master" 这个文件名表明这是一个Java项目的主目录,很可能包含了源代码、构建文件、配置文件等。用户可能需要解压这个文件,然后在本地环境中编译和运行Java代码,...

    nexus-3.20.1-win64(windows 解压版).zip

    标题“nexus-3.20.1-win64(windows 解压版).zip”明确指出这是一个针对Windows平台的Nexus 3.20.1版本的压缩文件,其中包含了64位系统所需的全部内容。这个版本是截至描述时Nexus的最新官方版本,因此对于希望保持...

    GUI反编译工具集合.zip

    3. `jd-gui-windows-1.6.6.zip`:这是适用于Windows操作系统的JD-GUI,采用.zip格式,可以直接解压缩运行。 JD-GUI是一款常用的Java反编译工具,它可以打开一个单独的.jar或.class文件,并显示对应的源代码。用户...

    双鱼林医院信息管理系统源码.zip

    【标签】: "双鱼林医院信息管理系统源码.zip" 的标签表明这是一个压缩文件,其中包含了整个系统的源代码,用户需要解压后才能查看和使用。.zip是一种常见的文件压缩格式,用于减少文件占用的磁盘空间,便于存储和...

    archive_ ActiveMQ消息服务器 v5.18.2 [江西新余电信].zip.zip

    要使用这个压缩包,首先需要解压"ActiveMQ消息服务器 v5.18.2 [江西新余电信].zip"文件,然后根据提供的文档和示例配置启动服务器。一旦服务器运行,就可以通过输出.txt文件中可能记录的日志信息来监控服务器状态,...

    ZqpFiles20100320.rar

    RAR是一种流行的压缩格式,由俄罗斯软件开发者尤里·罗兹努科夫(Yaroslav Zlobin)创建,它提供了比ZIP更高的压缩率,同时支持分卷压缩和恢复记录,以应对文件传输过程中的数据丢失。 【描述】提到的"很好的...

    2014应届生学生成绩管理系统Java实用源码整理learns

    3. **jsymxx3.zip**:这可能是项目的主要源代码压缩包,包含项目的各个组成部分,如Java源代码、配置文件、数据库脚本等。解压后,用户可以查看和研究代码,理解其工作原理,也可以在现有基础上进行修改和扩展。 ...

    maven 私服搭建工具3.30.zip

    - 使用解压后的脚本启动 Nexus 服务,例如 `bin/nexus start`,停止服务则使用 `bin/nexus stop`。 - 默认情况下,Nexus 会监听 `http://localhost:8081/nexus`,可以通过浏览器访问管理界面。 3. **仓库类型**:...

    apache-activemq-5.15.2.zip

    在解压"apache-activemq-5.15.2.zip"后,你会得到一个包含bin、conf、lib等目录的结构,其中bin目录包含了启动和停止服务器的脚本,conf目录下有配置文件,如activemq.xml,lib目录则包含了运行所需的各种库文件。...

    nexus-3.20.1-011-unix-linux.zip

    描述中提到的"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.27.0-03-win64-linux64.zip" 提供的信息表明,这是一个包含 Nexus 3 软件的压缩文件,版本号为 3.27.0-03,同时兼容 Windows 和 Linux 两种操作系统。Nexus 3 是一个流行的软件仓库管理工具,由 ...

    apache-activemq-5.15.0-bin2.zip

    1. **解压文件**: 首先,你需要解压缩“apache-activemq-5.15.0-bin2.zip”,这将创建一个包含bin、conf、lib等目录的结构。 2. **启动ActiveMQ**: 在bin目录下,运行相应的启动脚本(如在Windows上是`start.bat`,...

    elasticsearch-7.17.9-windows-x86-64.zip

    - 解压缩下载的zip文件,然后配置`config/elasticsearch.yml`文件以适应你的环境,如设置网络监听地址、端口和路径。 - 启动Elasticsearch服务,可以使用命令行或者脚本启动。 - 配置安全设置,特别是生产环境中,...

    sqlite 执行文件

    在Windows上,下载如上述的zip文件后,解压缩,将`sqlite3.exe`复制到需要使用它的目录或者系统PATH环境变量包含的路径下,这样就可以在命令行中全局调用`sqlite3`命令。 下面是关于SQLite和`sqlite3.exe`的一些...

    一款快捷易用的轻量级kafka可视化管理平台.zip

    而"kafka-console-ui_main.zip"是这个可视化管理平台的主要代码或可执行文件,解压后应该包含前端Vue.js应用和可能的后端服务(如果有的话),用户可以通过这个文件部署到服务器上运行。 关于Kafka可视化管理平台的...

    H2数据库最新稳定版本,平台无关包

    2. `h2-2014-04-05.zip`:这是一个ZIP压缩文件,包含H2数据库的纯Java版本。解压后,用户可以找到数据库引擎的JAR文件,以及其他相关工具,如命令行客户端和配置文件。这种形式适用于那些希望直接在命令行或集成到...

    移动的信息仓库数据存储

    `Jar_Zip`(ch08_jar_zip)可能涉及压缩和解压文件,Android支持处理ZIP和JAR文件,这对于资源打包和分发非常有用。 最后,`Sdcard_Database`(ch08_sdcard_database)可能是指在外部存储(如SD卡)上创建和管理...

Global site tag (gtag.js) - Google Analytics