gpt4 book ai didi

java - 无法在 Mac 中从 zip 存档中提取可执行文件

转载 作者:行者123 更新时间:2023-11-30 03:35:12 25 4
gpt4 key购买 nike

我想从 zip 存档中提取 Unix 可执行文件。它在 Windows 上工作正常,但在 Mac 上不起作用。我的代码下载 zip 文件并将其解压到特定位置。它确实提取该文件,但该文件是可执行文件,并将其提取为 TextEdit 文档。当我手动提取它时,我得到了可执行文件。我应该强制执行某些操作还是有任何权限?提前致谢。

这是我的解压缩函数:

    public void decompress(String zipFilePath, String extractedFilePath) {
byte[] buffer = new byte[1024];
try {
ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(extractedFilePath.toString()));
ZipEntry ze = zipInputStream.getNextEntry();
while (ze != null) {
String filename = ze.getName();
File newFile = new File(zipFilePath +_config.configProperties().getPathSeparator()+ filename + _config.configProperties().getVersion());

FileOutputStream fos = new FileOutputStream(newFile);
int len;
while ((len = zipInputStream.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
ze = zipInputStream.getNextEntry();
}
zipInputStream.closeEntry();
zipInputStream.close();
}catch (IOException ex){
ex.printStackTrace();
}
}

最佳答案

默认情况下,Mac 不知道如何处理 .exe 文件,除非您的系统上有 Windows 虚拟机(在这种情况下,.exe 文件双击时将由虚拟机打开)。该文件可能会用您的代码完美提取(这很可能),但如果它具有 .exe 扩展名或根本没有扩展名,那么它将默认为 TextEdit 文档,因为 Mac 不知道什么否则就用它来做。

您可以验证压缩前后文件的 SHA1 校验和,以确保它们相同。

your-mac:demo$ shasum manual_extraction.bin

your-mac:demo$ shasum code_extracted_version.bin

对于手动提取的版本(完美的版本)和代码提取的版本(已损坏的版本),从终端在 Mac 上查看以下命令的结果会很有趣:

your-mac:demo$ xxd manual_extraction.bin|头

your-mac:demo$ xxd code_extracted_version.bin|头

还有一个旁注 - 我注意到您有 extractedFilePath 参数作为 String 传入,但仍然调用 extractedFilePath.toString() 稍后在 ZipInputStream() 中。

关于java - 无法在 Mac 中从 zip 存档中提取可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28150145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com