Java - 将连续的InputStream转换为String而不等待关闭

时间:2011-09-12 13:30:05

标签: java http streaming gzip inputstream

所以问题是我有一个连接到远程http流服务器的gzip连接,它以高速率输出数据,我希望处理每一行数据。

通过Apache ContentEncodingHttpClient建立连接,该连接正确连接,我通过以下方式提取InputStream:

InputStream is = response.getEntity().getContent();

这可以正常工作。现在我想处理它,我的函数似乎等待流结束,它从来没有。

final String result = convertStreamToString(is, "UTF-8");
                    new Thread(){
                        public void run(){
                                r.gotResponse(result);
                        }
                    }.start();

转换为字符串函数是:

    public String convertStreamToString( InputStream is, String ecoding ) throws IOException
    {
        StringBuilder sb = new StringBuilder( Math.max( 16, is.available() ) );
        char[] tmp = new char[ 4096 ];

        try {
           InputStreamReader reader = new InputStreamReader( is, ecoding );
           for( int cnt; ( cnt = reader.read( tmp ) ) > 0; )
                sb.append( tmp, 0, cnt );
        } finally {
            is.close();
        }
        return sb.toString();
    }

有人能指出我正确处理内容的方向吗?

修改

我刚接触它,它处理每一行而不是追加每一行。

BufferedReader in = new BufferedReader(new InputStreamReader(is));
return in.readLine();
enter code here

1 个答案:

答案 0 :(得分:1)

如果你想处理每一行数据,那么你不能将InputStream包装在InputStreamReader中并将其包装在BufferedReader中吗?

BufferedReader提供了一个readLine()方法,可用于从流中读取行。