如何使用缓冲区删除inputstream的缓冲区?

时间:2012-04-07 01:45:03

标签: java io bufferedinputstream

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

  • 当读取未下载的部分时,wait()将会是 叫
  • 下载部件时,将调用notify()

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

提前感谢

1 个答案:

答案 0 :(得分:0)

我假设您使用AudioInputStream创建FileInputStream。你应该做的是:

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

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