2017-07-14 5 views
4

私はgzippedファイルをダウンロードして解凍したいのですが、解凍前に完全にダウンロードするのを待つ代わりに、解凍中に解凍したいと思います。これも可能ですか、gzip形式ではそのような圧縮を即座に禁止します。gzippedファイルをダウンロード中に解凍することはできますか?

もちろん、JavaのGZIPInputStreamライブラリを使用して、ローカルファイルシステム上のファイルの一部を解凍することはできますが、ローカルファイルシステムでは、完全にgzippedファイルが作成されています。しかし、インターネットやクラウドストレージからダウンロードする場合のように、あらかじめ完全なgzippedファイルを持っていないとこれが可能ですか?

+2

はい、問題ありません。 'gzip'は他のほとんどの圧縮形式と同様、完全にストリーム可能です。 –

答えて

1

あなたのURL接続は入力ストリームなので、入力ストリームと一緒にgzipinputstreamを作成するので、これはかなり簡単ですか?

public static void main(String[] args) throws Exception { 
    URL someUrl = new URL("http://your.site.com/yourfile.gz"); 
    HttpURLConnection someConnection = (HttpUrlConnection) someUrl.openConnection(); 
    GZIPInputStream someStream = new GZIPInputStream(someConnection.getInputStream()); 
    FileOutputStream someOutputStream = new FileOutputStream("output.tar"); 
    byte[] results = new byte[1024]; 
    int count = someStream.read(results); 
    while (count != -1) { 
     byte[] result = Arrays.copyOf(results, count); 
     someOutputStream.write(result); 
     count = someStream.read(results); 
    } 
    someOutputStream.flush(); 
    someOutputStream.close(); 
    someStream.close(); 
} 
+0

素晴らしい。私はこの解決策を試みます。 – pythonic

関連する問題