java - NIO GZIP 压缩和文件复制

标签 java filechannel gzipinputstream gzipoutputstream

我使用 FileChannelFileInputStream 进行了从 File fromFile 到 File toFile 的简单文件复制。

代码基本上是这样的:

source = new FileInputStream(fromFile).getChannel();
destination = new FileOutputStream(toFile, false).getChannel(); // overwrite
destination.transferFrom(source, 0, source.size());

其中 fromFiletoFile 是正确的 File 对象。 现在,我不想直接从 fromFile 复制,而是想使用 GZIP(在 Java 库中找到)压缩其内容,然后复制到 toFile。同样相反,当我从 toFile 传输回来时,我也想解压缩它。

我想知道有没有像这样的简单方法

source = new GZIPCompressInputStream(new FileInputStream(fromFile)).getChannel();

source = new GZIPDecompressInputStream(new FileInputStream(fromFile)).getChannel();

并且所有其余代码保持不变。您对最干净的解决方案有什么建议吗?

谢谢..

最佳答案

您可以将 FileInputStream 包装在 GZIPInputStream 中,如下所示:

InputStream 输入 = new GZIPInputStream(yourCompressedInput);

为了在写入时进行压缩,您应该使用GZIPOutputStream。

祝你好运。

关于java - NIO GZIP 压缩和文件复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29365879/

相关文章:

Java 使用 FileChannel 从文件读取

Java java.io.IOException : Not in GZIP format 异常

java - 在循环之前放入一条语句

java - Mac OS High Sierra 上的 mailR send.mail Java 错误

java - PostgreSQL:查询 json 列中的特定字段

java - 通过 GZIP 流读写对象?

java - 如何使用 java 将八位字节流读取为纯字符串/文本?

java - 推荐用于非业务类场景的java开源工作流引擎

java - FileChannel TransferFrom的评论说明

Java NIO MappedByteBuffer OutOfMemoryException