gpt4 book ai didi

java - 我们可以下载多个txt文件的Zip而不用java下载txt文件吗?

转载 作者:行者123 更新时间:2023-12-02 04:41:10 27 4
gpt4 key购买 nike

我们可以写入多个txt文件并直接下载为zip(无需下载txt文件)

当我们写入文件时,它是在物理文件中完成的。但是当我们想要创建该引用的 zip 时,它将考虑目标文件。

有什么方法可以将数据存储在目标文件中然后将其下载为 zip 吗??

File file = new File("/Users/VYadav/Desktop/lex/sitemap.txt");  // creates local object
String zipFileName = "/Users/VYadav/Desktop/lex/zipname.zip";

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

PrintWriter pw=new PrintWriter(file); // creates a physical file on disk
pw.write("Hii"); // writes in physical file
pw.flush();

ZipEntry ze = new ZipEntry(file.getName()); // Reads from local object (here data is not present)

zos.putNextEntry(ze);

此代码的输出将是一个以“Hii”为数据的 txt 文件和一个包含空白 txt 文件的 zip 文件。

因为文件是从 objet 放入 zip 条目的。

有什么方法可以更新对象中的数据然后下载到 zip 文件夹吗?

最佳答案

您可以使用即时创建的所有“压缩”文件来编写 Zip 文件。

既然你在谈论“下载”,我假设你在一个网络应用程序中,并且想要生成直接返回客户端的zip文件,所以你需要创建ZipOutputStream 针对响应流,而不是文件。例如。在 Servlet Web 应用程序中,您可以这样做:

response.setContentType("application/zip");

ZipOutputStream zos = new ZipOutputStream(response.getOutputStream());
PrintWriter out = new PrintWriter(zos);

zos.putNextEntry(new ZipEntry("Foo.txt"));
// write content of Foo.txt here, e.g.
out.println("Hello Foo");
out.flush();

zos.putNextEntry(new ZipEntry("Bar.txt"));
// write content of Bar.txt here, e.g.
out.println("Hello Bar");
out.flush();

zos.putNextEntry(new ZipEntry("Baz.png"));
// write content of Baz.png here, e.g. copy bytes from file on classpath
try (InputStream in = this.getClass().getResourceAsStream("logo.png")) {
byte[] buf = new byte[8192];
for (int len; (len = in.read(buf)) > 0; )
zos.write(buf, 0, len);
}

// Complete the zip file.
zos.finish(); // or zos.close()

关于java - 我们可以下载多个txt文件的Zip而不用java下载txt文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56516553/

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