gpt4 book ai didi

java - 使用系统首选应用程序显示 zip 内的文件而不使用 java 解压缩?

转载 作者:行者123 更新时间:2023-12-01 18:57:19 26 4
gpt4 key购买 nike

这是我的问题,到目前为止我已经压缩了一个文件(.zip),并且在另一个应用程序中我可以请求系统使用系统默认打开的应用程序显示一个文件”这种文件(.txt -> 记事本、.doc(x) -> Word、.psd -> Photoshop 等...) (Desktop.getDesktop().open(f) ;),问题是,如何请求系统显示zip文件中的文件而不解压它?

例如,使用 Winrar,您可以看到 zip 的内容,如果双击其中的其中一个文件,该文件将使用系统的首选/默认查看器/编辑器打开,并且 .zip 文件保留zipped(显然,或者至少你不需要解压整个.zip来访问你想要的文件)是否可以用java做到这一点? (最好只使用 java)。

最佳答案

为了能够将文件本身传递给另一个应用程序,您需要将其提取到某个位置,否则其他应用程序无法访问它。

其实WinRAR就是这样做的,在Java中你可以通过 ZipFile 来实现。和ZipEntry是的,您肯定必须提取它。

Java本身将文件缓存在属性“java.io.tmpdir”指定的文件夹中,所以我想你可以在处理zip条目时尝试查找它们,以便它们会被自动删除由 JVM 在终止时执行,无需打扰您自己。

要将 ZipInputStream 通过管道传输到文件,您只需使用像这样的实用函数(我个人用它来处理 zip 文件,因此我测试了它):

 private static void copy(InputStream in, OutputStream out) throws IOException {
byte[] buffer = new byte[8192];
while (true) {
int readCount = in.read(buffer);
if (readCount < 0) {
break;
}
out.write(buffer, 0, readCount);
}
}

用作

File file = new File(..);
FileOutputStream fos = new FileOutputStream(file);
ZipInputStream zis = zipFile.getInputStream(entry);
copy(zis,fos);

关于java - 使用系统首选应用程序显示 zip 内的文件而不使用 java 解压缩?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13499230/

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