【问题标题】:How to add a file in a specific folder (in the ZIP)如何在特定文件夹中添加文件(在 ZIP 中)
【发布时间】:2014-03-17 17:40:28
【问题描述】:

以下代码,如何使用 java 将文件添加到 zip:

String source = "C:/Users/XXXXX/Desktop/Helicopter.zip";
try {
  ZipFile zipFile = new ZipFile(source);

  ZipParameters parameters = new ZipParameters();

  zipFile.addFile(new File("C:/Users/XXXXXX/Desktop/HELLO_HELICOPTER.txt"), parameters);


} catch (net.lingala.zip4j.exception.ZipException e) {
  e.printStackTrace();
}

如何将文件添加到此 zip 存档的特定文件夹中?

【问题讨论】:

    标签: java zip4j


    【解决方案1】:

    在由 net.lingala.zip4j.ZipFile 创建的 zip 文件中保持原始文件夹结构:

    ZipFile zipFile = new ZipFile("target/new.zip");
    ZipParameters zipParameters = new ZipParameters();
    zipParameters.setFileNameInZip("folder/subfolder/file-name.txt");
    
    zipFile.addFile(new File("folder/subfolder/file-name.txt"), zipParameters);
    

    如果不设置 zipParameters.setFileNameInZip,文件将添加到 zip 文件的根目录中,没有原始目录结构。

    【讨论】:

    • 我认为此解决方案更好,您不必复制或移动文件夹中的某些文件即可在 zip 存档中生成相同的结构,而是您的文件结构保持不变,只有文件您存档中的结构已更改。
    • 不是那么直观,但效果很好
    • 如果你有一组文件需要在同一个文件夹级别添加,那么你可以zipParameters.setRootFolderInZip
    【解决方案2】:

    我找到了解决办法:

    把你要添加的文件放在一个特定的文件夹中,然后使用方法“addFolder()”。

    将添加此文件夹中的所有文件,如果同名文件夹已在 zip 中,则不会重新创建您的文件夹,但文件将添加到现有文件夹中

    例子:

    ZipFile zipFile = new ZipFile(source);
    ZipParameters parameters = new ZipParameters();
    
    zipFile.addFolder(new File("C:/Users/XXXXXX/Desktop/HELLO_Folder"), parameters);
    

    【讨论】:

      猜你喜欢
      • 2022-10-07
      • 1970-01-01
      • 2023-04-01
      • 2015-03-04
      • 1970-01-01
      • 2022-11-07
      • 2018-07-27
      • 1970-01-01
      • 2015-07-13
      相关资源
      最近更新 更多