Можем ли мы скачать Zip для нескольких TXT-файлов без загрузки TXT-файлов S в Java? - PullRequest
0 голосов
/ 09 июня 2019

Можем ли мы записывать в несколько текстовых файлов и загружать их напрямую в формате 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 в качестве данных и ZIP-файл, содержащий пустой текстовый файл.

потому что файл помещается в zip-запись из объекта.

Есть ли способ обновить наши данные в объекте, а затем загрузить в zip-папку ??

1 Ответ

0 голосов
/ 09 июня 2019

Вы можете написать Zip-файл со всеми «заархивированными» файлами, созданными на лету.

Поскольку вы говорите о «загрузке», я буду считать, что вы в веб-приложении,и вы хотите сгенерировать zip-файл непосредственно обратно клиенту, поэтому вам нужно создать ZipOutputStream для потока ответов, а не для файла.Например, в Servlet веб-приложении вы бы сделали это так:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...