获取完成读取之前加载到BufferReader的总字节数

时间:2012-01-25 12:16:43

标签: java

我正在java中使用HttpURLConnection读取一个大的xml文件,如下所示。

StringBuilder responseBuilder = new StringBuilder(1024);
char[] buffer = new char[4096];

BufferedReader  br = new BufferedReader(new InputStreamReader(((InputStream)new DataInputStream(new GZIPInputStream(connection.getInputStream()))),"UTF-8"));

int n = 0;
while(n>=0){
    n=br.read(buffer,0,buffer.length);
    if(n>0) responseBuilder.append(buffer,0,n);

}

是否有任何方法可以获得加载到BufferedReader的总字节数,然后通过char / line by line / char block by char block完成读取char。

2 个答案:

答案 0 :(得分:2)

听起来你试图找出BufferedReader的大小而不消耗它。

您可以尝试使用HttpURLConnection的{​​{3}}方法。这可能有效,也可能无效。它当然不会做的是给你未压缩的流的大小。如果你追求的是后者,那几乎肯定是运气不好。

如果我误解了你的问题,请澄清你所追求的是什么。

答案 1 :(得分:0)

如果已设置内容长度标题,则可以通过该连接访问该标题。但是如果内容已被压缩,那么它可能没有被设置,或者可能会给出压缩的大小,我假设你正在寻找未压缩的大小。