0

考虑带有缓冲区的 InputStream,例如 AudioInputStream (ieavailable() return >=0) 输入流正在读取一个变化的文件(一个从互联网不断下载的文件,未下载的部分用零打包)。

  • 当它读取到未下载的部分时,将调用wait()
  • 下载部分后,将调用 notify()

但是,当它被唤醒时,如何确保它丢弃缓冲区(无用的零)并再次读取文件?

预先感谢

4

1 回答 1

0

我假设您正在AudioInputStream使用FileInputStream. 你应该做的是:

PipedInputStream pipeIn = new PipedInputStream();
PipedOutputStream pipeOut = new PipedOutputStream(pipeIn);
AudioInpuStream ais = new AudioInputStream(pipeIn, ..., ...);

现在,当您下载更多文件时,您只需将其写入pipeOut.

于 2012-04-07T01:57:20.860 回答