Java 从ZipOutputStream创建文件

Java 从ZipOutputStream创建文件,java,file,zip,fileoutputstream,zipoutputstream,Java,File,Zip,Fileoutputstream,Zipoutputstream,我正在使用下面的代码创建一个Zip文件。我想在createZipFromFiles方法中将创建的Zip作为文件对象返回,以便在其他地方使用。这可以从FileOutputStream或ZipOutputStream完成吗 public File createZipFromFiles(String zipName, List<File> files) { try { FileOutputStream fos = new FileOutputStream(zipNa

我正在使用下面的代码创建一个Zip文件。我想在createZipFromFiles方法中将创建的Zip作为文件对象返回,以便在其他地方使用。这可以从FileOutputStream或ZipOutputStream完成吗

public File createZipFromFiles(String zipName, List<File> files) {
    try {
        FileOutputStream fos = new FileOutputStream(zipName);
        ZipOutputStream zos = new ZipOutputStream(fos);
        for (File file : files) {
            addToZipFile(file.getName(), zos);
        }
        return null;
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return null;
}

public static void addToZipFile(String fileName, ZipOutputStream zos) throws FileNotFoundException, IOException {

    System.out.println("Writing '" + fileName + "' to zip file");

    File file = new File(fileName);
    FileInputStream fis = new FileInputStream(file);
    ZipEntry zipEntry = new ZipEntry(fileName);
    zos.putNextEntry(zipEntry);

    byte[] bytes = new byte[1024];
    int length;
    while ((length = fis.read(bytes)) >= 0) {
        zos.write(bytes, 0, length);
    }

    zos.closeEntry();
    fis.close();
}
public File createZipFromFiles(字符串zipName,列表文件){
试一试{
FileOutputStream fos=新的FileOutputStream(zipName);
ZipoutStream zos=新ZipoutStream(fos);
用于(文件:文件){
addToZipFile(file.getName(),zos);
}
返回null;
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回null;
}
公共静态void addToZipFile(字符串文件名,zipoutpstream zos)引发FileNotFoundException,IOException{
System.out.println(“将“'+fileName+“'写入zip文件”);
文件=新文件(文件名);
FileInputStream fis=新的FileInputStream(文件);
ZipEntry ZipEntry=新ZipEntry(文件名);
佐斯·普特内森特里(齐彭特里);
字节[]字节=新字节[1024];
整数长度;
而((长度=fis.read(字节))>=0){
写入(字节,0,长度);
}
zos.closeEntry();
fis.close();
}
返回即可

new File(zipName);
因为你已经有了zip文件名