我正在为ad-hoc基于行的协议编写解析器,因此BufferedReader.readLine
方法的功能完全适合。
但我有一定要求,如果只找到\r\n
或\r
,则行结尾必须正好\n
并且应该抛出错误(或应用其他解析逻辑)。
那么有没有办法在不滚动自定义行分割实现的情况下强制执行此操作? 如果没有,实现这个的最佳方法是什么?
答案 0 :(得分:1)
你可能会覆盖readLine()
本身 - 但你基本上必须重现其中的所有代码。没有什么可以调整只是来改变行尾。
鉴于您的代码无法直接访问缓冲区,我怀疑您实际上可以更简单地实现一个全新的类,该类可能会从BufferedReader
中读取为了避免自己做很多缓冲。 (即只是在readLine
方法的持续时间内缓冲,而不是在实例中有缓冲区。)
答案 1 :(得分:0)
除了扫描无效字符序列的行之外,没办法。这可以通过覆盖readLine()
中的BufferedReader
方法(如Jon所说)来完成,也可以在阅读课程中完成。