1

我想从一个可以包含文本、可执行文件的压缩包中解压缩文件。我已经找到了使用 Java 互操作在给定位置解压缩文件内容的方法。

但是,在给定位置解压缩所有内容后,我无法运行可执行文件,因为权限未设置为文件上的可执行文件。

我正在使用 Java API 中的 ZipInputStream 和 BufferedOutputStream 来分别读取和写入。我认为我的代码没有任何问题,因为我可以看到副作用并且文件已按预期解压缩。另外,我检查了文件的权限,并且没有一个可执行文件对其具有 x 权限。

当然,我可以运行 unzip 命令,它应该可以处理所有事情,但我不确定程序将在哪个平台上运行。所以,我想我会以编程方式解压缩所有内容。

我真的可以使用 unzip 命令吗?或者有没有其他推荐的方法?

谢谢。

4

1 回答 1

0

如果您的程序在磁盘上创建文件,那么设置权限是该程序的责任。听起来每个文件都获得了默认文件权限,其中不包括设置可执行位。

如果您使用的库允许您访问为存档中给定文件存储的权限,那么在完成写入后重置文件的权限将相当简单。

如果您正在解压其他人提供的文件,请务必牢记安全。

于 2015-10-30T00:15:07.533 回答