簡體   English   中英

Java.util.zip替換單個zip文件

[英]Java.util.zip replace a single zip file

問題

我有一個現有的zipfile“main.zip”。 我想替換它中的一個文件,“比如main.zip/foo。”

我知道:

http://docs.oracle.com/javase/7/docs/api/java/util/zip/ZipOutputStream.html

但是,這並不是我想要的,因為它創建了一個新的Zip文件 - 因此我還必須添加main.zip中的所有現有條目。

題:

有沒有辦法在Java中“替換”Zip檔案中的單個文件? (無需重新創建新的zip存檔並復制所有舊數據)。

我覺得你很幸運。

使用java 7 java.nio.file.FileSystemFiles.copy()我設法在一瞬間將文本文件插入到一個大型zip文件中。

public static void main(String[] argv) {
    Path myFilePath = Paths.get("c:/dump2/mytextfile.txt");

    Path zipFilePath = Paths.get("c:/dump2/myarchive.zip");
    try( FileSystem fs = FileSystems.newFileSystem(zipFilePath, null) ){
        Path fileInsideZipPath = fs.getPath("/mytextfile.txt");
        Files.copy(myFilePath, fileInsideZipPath);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

它使用ZipFileSystem Provider“安裝”zip。 然后你可以復制你想要的任何東西。 這些變化似乎發生在fs.close()

閱讀更多@ oracle

暫無
暫無

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

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