在java内存中压缩文件会生成一个zip文件,但其中的文件是空的

在java内存中压缩文件会生成一个zip文件,但其中的文件是空的,java,maven,jar,zip,Java,Maven,Jar,Zip,我正在尝试用Java压缩多个文件,以便在我的jar中使用。2个文件是图像,1个是HTML临时文件。在压缩这些文件时,当我试图查看压缩文件的内容时,所有3个文件都变为空。由于文件位于zip中,所以不会引发错误,但由于某些原因,这些文件是空的。我需要将我的zip文件保存在内存中 这是我的邮政编码 公共静态文件zipPdf(文件数据、文件封面)引发IOException{ ArrayList zips=新的ArrayList(); ClassLoader=RunningPDF.class.getCla

我正在尝试用Java压缩多个文件,以便在我的jar中使用。2个文件是图像,1个是HTML临时文件。在压缩这些文件时,当我试图查看压缩文件的内容时,所有3个文件都变为空。由于文件位于zip中,所以不会引发错误,但由于某些原因,这些文件是空的。我需要将我的zip文件保存在内存中

这是我的邮政编码

公共静态文件zipPdf(文件数据、文件封面)引发IOException{
ArrayList zips=新的ArrayList();
ClassLoader=RunningPDF.class.getClassLoader();
File image=新文件(Objects.requirennull(loader.getResource(“chekklogo.png”)).getFile());
File man=新文件(Objects.requirennull(loader.getResource(“manlogo.jpg”)).getFile());
ByteArrayOutputStream bas=新的ByteArrayOutputStream();
try(ZipOutputStream zos=新的zipoutpstream(baos)){
ZipEntry entry=newzipentry(data.getName());
zos.putNextEntry(条目);
ZipEntry entry2=新的ZipEntry(image.getName());
佐斯·普特内森特里(入口2);
ZipEntry entry3=新的ZipEntry(man.getName());
zos.putNextEntry(入口3);
}捕获(ioe异常ioe){
ioe.printStackTrace();
}

您忘记了写入字节。Putnex tentry只添加了一个条目。您需要显式写入字节。请执行以下操作

        File file = new File(filePath);
        String zipFileName = file.getName().concat(".zip");

        FileOutputStream fos = new FileOutputStream(zipFileName);
        ZipOutputStream zos = new ZipOutputStream(fos);

        zos.putNextEntry(new ZipEntry(file.getName()));

        byte[] bytes = Files.readAllBytes(Paths.get(filePath));
        zos.write(bytes, 0, bytes.length);
        zos.closeEntry();
        zos.close();

您好,这非常适合我的html文件。我的图像仍然是空的。您知道为什么吗?您仍然有问题。您确定您正确加载了图像。因为您提到了文件名而不是路径,并指定了非空。可能您的图像未正确加载,但文件仍然不是空的。请指定路径。