簡體   English   中英

在不使用Java解壓縮的情況下,使用系統首選應用程序在zip文件中顯示文件?

[英]display a file inside a zip with system preferred application without unzipping using java?

這是我的問題,到目前為止,我已經壓縮了一個文件(.zip),並且在另一個應用程序中,我可以請求系統使用該應用程序顯示文件,系統默認情況下會打開“那種”文件( .txt->記事本,.doc(x)-> Word,.psd-> Photoshop等...)( Desktop.getDesktop().open(f); ),問題是,我如何向系統顯示未壓縮文件的壓縮文件中的文件?

例如,使用Winrar可以看到zip的內容,如果雙擊其中的一個文件,則使用系統的首選/默認查看器/編輯器打開該文件,並且.zip文件保持壓縮狀態(顯然,或者至少您不需要解壓縮整個.zip即可訪問所需的文件)是否可以使用Java來做到這一點? (最好僅使用Java)。

為了能夠將文件本身傳遞給另一個應用程序,您需要將其提取到某個位置,否則其他應用程序將無法訪問它。

實際上,這就是WinRAR的工作方式,在Java中,您可以通過ZipFileZipEntry來完成它,是的,您必須確定要提取它。

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM