Tag: zipoutputstream

如何使用ZipOutputStream创建压缩的Zip存档,以便ZipEntry的方法getSize()返回正确的大小?

考虑将单个文件test_file.pdf放入zip archive test.zip的代码示例,然后阅读此存档: import java.io.*; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; public class Main { public static void main(String[] args) { File infile = new File(“test_file.pdf”); try ( FileInputStream fis = new FileInputStream(infile); ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(“test.zip”)); ) { int bytesRead; byte[] buffer = new byte[1024]; ZipEntry entry = new ZipEntry(“data”); entry.setSize(infile.length()); zos.putNextEntry(entry); […]

从ZipInputStream读取到ByteArrayOutputStream

我试图从java.util.zip.ZipInputStream读取一个文件,并将其复制到java.io.ByteArrayOutputStream (这样我就可以创建一个java.io.ByteArrayInputStream并将其交给第三方库,将最终关闭流,我不希望我的ZipInputStream关闭)。 我可能在这里遗漏了一些基本内容,但我从未在这里输入while循环: ByteArrayOutputStream streamBuilder = new ByteArrayOutputStream(); int bytesRead; byte[] tempBuffer = new byte[8192*2]; try { while ((bytesRead = zipStream.read(tempBuffer)) != -1) { streamBuilder.write(tempBuffer, 0, bytesRead); } } catch (IOException e) { // … } 我错过了哪些可以让我复制流? 编辑: 我之前应该提到过,这个ZipInputStream不是来自文件,所以我认为我不能使用ZipFile 。 它来自通过servlet上传的文件。 此外,在获取此代码片段之前,我已经在ZipInputStream上调用了getNextEntry() 。 如果我不尝试将文件复制到另一个InputStream (通过上面提到的OutputStream ),并且只是将ZipInputStream传递给我的第三方库,那么库会关闭流,而我无法做更多的事情,比如处理流中的剩余文件。

Spring REST – 创建.zip文件并将其发送到客户端

我想创建包含我从后端收到的压缩文件的.zip文件,然后将此文件发送给用户。 2天我一直在寻找答案,找不到合适的解决方案,也许你可以帮助我:) 现在,代码是这样的:(我知道我不应该在spring控制器中完成所有操作,但不关心它,它只是为了测试目的,找到让它工作的方法) @RequestMapping(value = “/zip”) public byte[] zipFiles(HttpServletResponse response) throws IOException{ //setting headers response.setContentType(“application/zip”); response.setStatus(HttpServletResponse.SC_OK); response.addHeader(“Content-Disposition”, “attachment; filename=\”test.zip\””); //creating byteArray stream, make it bufforable and passing this buffor to ZipOutputStream ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(byteArrayOutputStream); ZipOutputStream zipOutputStream = new ZipOutputStream(bufferedOutputStream); //simple file list, just for tests ArrayList files = […]

将文件添加到ZIP文件

我试图将一些文件添加到ZIP文件,它创建文件但不添加任何内容。 代码1: String fulldate = year + “-” + month + “-” + day + “-” + min; File dateFolder = new File(“F:\\” + compname + “\\” + fulldate); dateFolder.mkdir(); String zipName = “F:\\” + compname + “\\” + fulldate + “\\” + fulldate + “.zip”; zipFolder(tobackup, zipName); 我的function: public static void zipFolder(File folder, String […]