将文件 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);
}
}
}
你好,我是 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);
}
}
}