将文件 Json(数组)放入 zip 文件 [Java]

Put a file Json (array) into a zip file [Java]

你好,我是 java 的新手,我的英语也不是很好 lmao 我需要将文件 json(它是一个数组 json)放入文件 zip trought java,但我尝试了多种解决方案,但没有用 :(

这是我的代码:

     JSONParser parser = new JSONParser();
     String desktopPath =(System.getProperty("user.home")+"\"+"Desktop");
        new File(desktopPath+"\Service Reply").mkdir();
    String definitivePath = (desktopPath +"\"+"Service Reply"+"\");
        
    
    Object obj = parser.parse(new FileReader(definitivePath+"daticliente.json"));

        File f = new File(definitivePath+"//"+"test1.zip");
        ZipOutputStream out = new ZipOutputStream(new FileOutputStream(f));
        ZipEntry e = new ZipEntry(definitivePath+"daticliente.json");
        out.putNextEntry(e);
        out.closeEntry();
        out.close();

有什么帮助吗? 问候

您正在创建一个 ZipEntry 但您没有添加文件内容,因此生成的文件是空的。您必须读取文件并将内容添加到 ZipOutputStream 实例。这是一个例子:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipFileExample {

    public static void main(String[] args) {
        zipFile("README.md");
    }

    private static void zipFile(String filePath) {
        try {
            final var file = new File(filePath);
            final var zipFileName = file.getName().concat(".zip");

            final var fileOutputStream = new FileOutputStream(zipFileName);
            final var zipOutputStream = new ZipOutputStream(fileOutputStream);

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

            final var bytes = Files.readAllBytes(Paths.get(filePath));
            zipOutputStream.write(bytes, 0, bytes.length);
            zipOutputStream.closeEntry();
            zipOutputStream.close();

        } catch (final FileNotFoundException ex) {
            System.err.format("The file %s does not exist", filePath);
        } catch (final IOException ex) {
            System.err.println("I/O error: " + ex);
        }
    }

}