Java中BufferedReader.readLine()的最大行长?

我使用BufferedReader的readLine()方法从套接字读取文本行。

没有明显的方法来限制读取行的长度。

我担心数据源会(恶意或错误地)写很多数据而没有任何换行符,这将导致BufferedReader分配无限量的内存。

有办法避免这种情况吗?还是我必须实现readLine()自己的受限版本?

回答:

最简单的方法是实现您自己的边界线阅读器。

或者更简单,重复使用代码这个BoundedBufferedReader类。

实际上,编写readLine()与标准方法相同的代码并不是一件容易的事。正确处理3种行终止符需要一些非常仔细的编码。比较上面链接与Sun版本和BufferedReader的Apache

Harmony版本的不同方法很有趣。

注意:我并不完全相信有界版本或Apache版本都是100%正确的。有界版本假定基础流支持标记和重置,但这并不总是正确的。如果Apache版本将CR视为缓冲区中的最后一个字符,则它会预读一个字符。在读取用户键入的输入时,这会在MacOS上中断。Sun版本通过设置一个标志来处理此问题,该标志将导致CR在下一个read...操作中被跳过之后可能的LF

。即没有虚假的预读。

以上是 Java中BufferedReader.readLine()的最大行长? 的全部内容, 来源链接: utcz.com/qa/413596.html

回到顶部