使用ByteArrayOutputStream创建的Java Zip文件比使用FileOutputStream创建的文件小
使用ByteArrayOuputStream输出的Zip文件比使用FileOutputStream输出的Zip文件小
在Java中,我创建了一个Zip文件。当我使用FileOutputStream时,它会成功打开
当将FileOutputStream切换到ByteArrayOutputStream时,我得到了一个稍小的文件,大约221字节。该文件不会打开,但与另一个文件的内容相同,但缺少221字节
在这两种情况下,我用来构造Zip文件的逻辑是相同的。因此,我将分享基本的逻辑,而无需创建zip(如果您需要,请告诉我)
ByteArrayOutputStream baos = new ByteArrayOutputStream();
zipOS = new ZipOutputStream(baos);
然后我创建Zip文件,然后
zipOS.flush();
baos.flush();
baos.writeTo(new FileOutputStream("TEST_AS_BYTESTREAM_1.zip"));
zipOS.close();
baos.close();
我用的是BAO。writeTo()来绕过它,以证明问题不是HTTP响应,而是ByteArrayOutputStream元素
当使用baos.writeTo(new FileOutputStream("TEST_AS_BYTESTREAM_1.zip"));
我得到了一个较小的文件,不能作为Zip打开
这种逻辑在java控制器中,这样在网页上单击的链接将下载zip文件,而不会触及除用户之外的任何文件系统
下面是使用FileOutputStream的代码,它可以工作
FileOutputStream baos = new FileOutputStream("TEST_AS_FILE.zip");
zipOS = new ZipOutputStream(baos);
除此之外,第二个代码片段与此无关,因为我需要发送在web服务器上创建的文件。但关键是,具有相同逻辑和ByteArrayOutputStream的Fileoutput流有区别
共 (0) 个答案