前言:我是一个彻头彻尾的 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/