2012-10-17 73 views
4

我正在使用AsynkTast下载一组CSV行,并且想要跟踪总共读取了多少字节。BufferedReader,读多少个字节?

while ((string = bufferedReader.readLine()) != null) 
{ 
    bytesRead += ?; 
} 

我将如何访问行总字节数?

对不起,如果这个问题是重复的,但我似乎只能找到问题的答案是关于OutputStream

回答

1

尝试:

while ((string = br.readLine()) != null) 
{ 
    bytesRead += (string.getBytes().length); 
} 
+4

取决于你想如何准确是。如果要包含行分隔符,则在读取每行之后,在系统属性line.separator中添加字节数。文件末尾还有一些不确定性:那里可能没有分隔符。如果你想要绝对精确,你可以重载BufferedReader并计算那里的字节数。 –

+0

另请注意,String.getBytes()方法[“使用平台的默认字符集将此字符串编码为一系列字节,并将结果存储到新的字节数组中”](https://docs.oracle.com/ javase/8/docs/api/java/lang/String.html#getBytes--) - 所以如果原始InputStream使用不同的编码,返回值可能包含与BufferedReader读取的字节序列不同的字节序列。 – megaflop

+0

另请参阅此答案:http://stackoverflow.com/a/15093285/889583 – megaflop