将java readLine()能够读取1GB行

pra*_*sha 3 java string file-io bufferedreader

BufferedReader#readLine()尝试用8192字节填充其缓冲区.如果行本身的大小比这大得多,它会抛出异常还是以块的形式读取并打印整行?

icz*_*cza 6

BufferedReader.readLine()声明返回一个String可以是1 GB长的.阿String是一个char[]在它的内部表示,和在Java中的数组的长度可以比10 ^ 9大得多(阵列的最大尺寸是小于一点点Integer.MAX_VALUE).

BufferedReader.readLine()使用a 的实现StringBuffer也构建String在一个char数组中,这样也不会阻止该行长度为1GB.

内部缓冲区BufferedReader不限制最大行大小,它仅用于加速某些操作并支持Reader.mark()Reader.reset()操作.

注意:

String保存字符而不是字节是有利的,因此数组限制适用于字符数,这可能比字节数更多,具体取决于所使用的字符编码和实际文本内容(例如,如果UTF-8编码如果使用,则字符甚至可以编码为4个字节的数据.