所以问题是我有一个连接到远程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
答案 0 :(得分:1)
如果你想处理每一行数据,那么你不能将InputStream包装在InputStreamReader
中并将其包装在BufferedReader
中吗?
BufferedReader提供了一个readLine()
方法,可用于从流中读取行。