Scala 缓冲输入流 reader

Scala bufferedinput stream reader

我有一个scala程序如下

object TestApp {
  def main(args: Array[String]): Unit = {
    val in = new BufferedInputStream(new FileInputStream("testBytes.txt"))
    val buffer = Array.ofDim[Byte](15)
    while (in.read(buffer)>0) {
      println(new String(buffer))
    }
  }
}

输入文件包含"AAAAAAAAAABBBBBBBBBB"

当我 运行 这个程序时,我得到以下结果

AAAAAAAAAABBBBB
BBBBBAAAAABBBBB

我很困惑为什么缓冲区仍然保留旧的读取数据,或者有什么方法可以避免这种情况?

我期待这样的事情

AAAAAAAAAABBBBB
BBBBB

read方法returns读取的字节数。仅在缓冲区中使用这些字节。例如

var len = 0
while ({len = in.read(buffer); len} > 0) {
  println(new String(buffer, 0, len))
}