java - FileOutputStream 与 ByteArrayOutputStream

标签 java file stream

我正在阅读别人的代码。这是它的要点。

一个类使用 GZIPInputStream 和 GZIPOutputStream 压缩和解压缩文件。

这是压缩过程中发生的事情的片段。 inputFileoutputFile 是类 File 的实例。

FileInputStream fis = new FileInputStream(inputFile);
GZIPOutputStream gzos = new GZIPOutputStream(new FileOutputStream(outputFile));

//the following function copies an input stream to an output stream
IOUtils.copy(fis,gzos);

//outputFile is the compressed file
...

现在,这是解压缩过程中发生的事情。

GZIPInputStream gzis = new GZIPInputStream(new FileInputStream(inputFile));
ByteArrayOutputStream baos = new ByteArrayOutputStream();

//copies input stream to output stream
IOUtils.copy(gzis,baos);

//this method does as its name suggests
FileUtils.writeByteArrayToFile(outputFile, baos.toByteArray());

//outputFile is the decompressed file
...

原程序员在压缩时选择 FileOutputStream 而在解压时选择 ByteArrayOutputStream 的可能原因是什么?这让我很困惑。

除非有充分的理由,否则我想我会更改它们以使其保持一致以避免将来出现混淆。这是个好主意吗?

最佳答案

嘿,听起来好像他们从不同来源复制粘贴了代码? :-P 不,严重的是,除非您需要检查解压缩的数据,否则您可以只使用 BufferedOutputStream 进行压缩和解压缩。

关于java - FileOutputStream 与 ByteArrayOutputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4587003/

相关文章:

java - 创建一个由 .txt 元素填充的数组

在 MVSC 中为 cURL 创建字符串流

java - Mockito spy 功能

java - 是否可以在 O(n) 时间内生成子数组?

java - Onelogin java saml 用于提供访问

java - 从文本文件读取,记录用空行分隔(java)

JavaScript : open files with the value of select

c++ - std::getline 函数错误 (fstreeam _Lock())

javascript - 使用 JW Player 播放 SkyRadio

javascript:从 mp3 流中读取 id3 标签