[英]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中,您可以通過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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.