【发布时间】:2011-06-02 23:42:03
【问题描述】:
我正在阅读别人的代码。这是它的要点。
一个类使用 GZIPInputStream 和 GZIPOutputStream 压缩和解压缩文件。
这里是压缩过程中发生的事情的 sn-p。 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的可能原因是什么?这让我很困惑。
除非有充分的理由,否则我认为我会将它们更改为一致以避免将来出现混淆。这是个好主意吗?
【问题讨论】:
-
IOUtils 和 FileUtils 是专有的还是来自 commons-io 之类的库?
-
@sblundy,它们来自 commons-io 之类的库。