有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用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) 个答案