java - GJava中从标准输入到标准输出的压缩

标签 java io gzip stdout stdin

前言:我是一个彻头彻尾的 Java 菜鸟...我昨天刚刚写了 Hello World。怜悯我的菜鸟自己。

我不确定如何在 Java 中从标准输入或输出读取到标准输出。我知道有像 Scanners 和 System.out.println 这样的东西,但这似乎并不直接适用于我想要做的事情。

特别是,我尝试在标准输入上使用 GZip 并将压缩结果输出到标准输出。我看到有一个GZipOutputStream class我肯定会想用的。但是,如何初始化输出流以定向到 std 输出?此外,我如何从标准输入中读取?

我怎样才能做到这一点?如何压缩 std 输入并将结果输出到 std 输出?

(这是我想要完成的任务的图表:标准输入 -> GZIP(通过我的 Java 程序) -> 标准输出(标准输入的压缩版本)

最佳答案

看一下下面的构造函数:GZIPInputStream(InputStream in)。要将标准输入作为InputStream,请使用System.in。从流中读取数据是使用 read(byte[] buf, int off, int len) 方法完成的 - 请查看文档以获取详细说明。 整个事情就像这样

GZIPInputStream i = new GZIPInputStream(System.in);
byte[] buffer = new byte[1024];
int n = i.read(buffer, 0,buffer.length)
System.out.println("Bytes read: " + n);

就我个人而言,我发现 Java 中的流具有陡峭的学习曲线,因此我建议阅读在线教程。

我将把它作为练习来计算输出。

-- 免责声明:尚未实际尝试过该代码

关于java - GJava中从标准输入到标准输出的压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7894982/

相关文章:

java - tomcat执行外部java程序失败

python - 大量小文件的 C 与 Python I/O 性能对比

c++如何根据我要处理的文件更改void *的大小

javascript - 如何对我网站上的 .css 和 .js 文件使用 gzip 压缩?

java - 不包含 youtube 的 URL 的正则表达式

java - 多个 CPU 中的线程行为

java - 应用程序首次启动时应打开对话窗口

networking - 事件驱动编程是如何实现的?

directory - 文件夹和存档有什么区别?

php - 使用 PHP 和 Apache 处理 gzip 有什么区别?