gpt4 book ai didi

java - 无法在 Java/Groovy 中创建 zip 文件

转载 作者:行者123 更新时间:2023-12-01 06:56:08 25 4
gpt4 key购买 nike

我尝试了多种方法在 Java/Groovy 中创建此 zip 文件。我尝试的前几种方法(来自各种博客/帖子)导致 zip 文件损坏且无法打开。所以,我尝试了这个(如下),看起来相当有前途。 sysouts 报告传递给 FileInputStream 的有效文件路径。我不确定是否是传递给 ZipOutputStream 的 FQ 路径导致了问题。不管怎样,下面是代码,它会创建一个小的 (188kb) zip 文件(没有条目)。有什么建议吗?

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Set;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

class FileZipper {

public static void makeZip(Set fullyQualifiedFileNames, String zipFileName, String outDir) throws IOException, FileNotFoundException
{
// These are the files to include in the ZIP file
Object[] filenames = fullyQualifiedFileNames.toArray();
String fileSeparator = (String) System.getProperties().get("file.separator");

// Create a buffer for reading the files
byte[] buf = new byte[1024];

// Create the ZIP file
String outFilename = outDir + fileSeparator +zipFileName;
FileOutputStream fos = new FileOutputStream(outFilename);
ZipOutputStream zos = new ZipOutputStream(fos);
System.out.println("Zipping to file " +outFilename);
// Compress the files

for (Object fileName: filenames)
{
System.out.println("Adding file: " + fileName);
FileInputStream fis = new FileInputStream((String)fileName);

// Add ZIP entry to output stream.
String[] nodes = ((String)fileName).split("[/[\\\\]]");
String zipEntry = nodes[nodes.length-1];
System.out.println("Adding Zip Entry: " + zipEntry);
zos.putNextEntry(new ZipEntry((String)fileName));

// Transfer bytes from the file to the ZIP file
int len;
int totalBytes = 0;
while ((len = fis.read(buf)) > 0)
{
totalBytes += len;
zos.write(buf, 0, len);
}
System.out.println("Zipped " +totalBytes +" bytes");
// Complete the entry
zos.closeEntry();
fis.close();
}

// Complete the ZIP file
zos.close();
fos.close();
}
}

最佳答案

如果您使用 Groovy,最简单的方法是使用 AntBuilder:

new AntBuilder().zip(
destfile: "myfile.zip",
basedir: "baseDir")

或者从 Groovy 1.8 开始:

ant.zip(destfile: 'file.zip', basedir: 'src_dir')

关于java - 无法在 Java/Groovy 中创建 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11476641/

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