2011-10-25 16 views
0

はじめに:私はJavaのnoobです。昨日Hello Worldを書いたばかりです。私の奴隷の自己に慈悲を持ってください。Javaの標準入力から標準出力へのGZIP

標準入出力からJavaで標準出力に読み込む方法がわかりません。私はScannerやSystem.out.printlnのようなものがあることを知っていますが、これは私がやろうとしていることに直接当てはまるようではありません。

特に、標準入力でGZipを使用して、圧縮結果を標準出力に出力しようとしています。私は確かに使用したいGZipOutputStream classがあることがわかります。しかし、出力ストリームを初期化して標準出力に出力するにはどうすればよいですか?さらに、標準入力からどうやって読み込むことができますか?

どうすればこの問題を解決できますか? std inputを圧縮してその結果をstd出力に出力するにはどうすればよいですか?

は(ここで私が達成しようとしているものの図です:STD入力 - > GZIP(私のJavaプログラム経由) - > STD出力(STD入力の圧縮版)

答えて

3

は見てみましょう。コンストラクタ以下:。System.inを使用し、GZIPInputStream(InputStream in)InputStreamとしてstdinを取得するには、ストリームからの読み込みは、詳細な説明のためのドキュメントを見てみましょうMETHOD- 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で急速な学習曲線があるので、チュートリアルをオンラインで読むことをお勧めします。

出力を把握するための練習として残します。

- 免責事項:実際に私は入力を解凍する必要はありませんので、私は実際にGZIPInputStreamを使用していないものの、コード

+0

これは便利ですが試していません。 –

+0

GZIPOutputStream(System.out)の作成にも同様のアプローチを使用できます。 –

+0

間違いなく、私はそれが役に立つと言い、それにアップフォートを与えたのです! –

0
import java.io.IOException; 
import java.util.zip.GZIPOutputStream; 

public class InToGzipOut { 
    private static final int BUFFER_SIZE = 512; 

    public static void main(String[] args) throws IOException { 
     byte[] buf = new byte[BUFFER_SIZE]; 
     GZIPOutputStream out = new GZIPOutputStream(System.out); 
     int len; 
     while ((len = System.in.read(buf)) > 0) { 
      out.write(buf, 0, len); 
     } 
     out.finish(); 

    } 
} 
関連する問題