我正在阅读别人的代码。这是它的要点。
一个类使用 GZIPInputStream 和 GZIPOutputStream 压缩和解压缩文件。
这是压缩过程中发生的事情的片段。 inputFile
和 outputFile
是类 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/