Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用缓冲区删除inputstream的缓冲区?_Java_Io_Bufferedinputstream - Fatal编程技术网

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

Java 如何使用缓冲区删除inputstream的缓冲区?,java,io,bufferedinputstream,Java,Io,Bufferedinputstream,考虑带有缓冲区的InputStream,例如AudioInputStream(即可用()返回>=0) inputstream正在读取一个正在更改的文件(一个不断从internet下载的文件,未下载的部分用零填充) 当它读取到未下载的部分时,wait()将 叫 下载部件时,将调用notify() 但是,当它被唤醒时,如何确保它删除缓冲区(无用的零)并再次读取文件? 提前感谢我假设您正在使用文件输入流创建您的音频输入流。你应该做的是: PipedInputStream pipeIn = new

考虑带有缓冲区的InputStream,例如AudioInputStream(即可用()返回>=0) inputstream正在读取一个正在更改的文件(一个不断从internet下载的文件,未下载的部分用零填充)

  • 当它读取到未下载的部分时,wait()将 叫
  • 下载部件时,将调用notify()
但是,当它被唤醒时,如何确保它删除缓冲区(无用的零)并再次读取文件?


提前感谢

我假设您正在使用
文件输入流
创建您的
音频输入流
。你应该做的是:

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

现在,当您下载更多的文件时,您所要做的就是将其写入
pipeOut

您能给我们提供有关AudioInputStream的更多信息吗?@dash1e AudioInputStream用于读取声音文件,它具有缓冲区(即available()return>=0)。实际上,我尝试编写一个播放器,可以播放下载部分的下载声音文件,我首先用零填充该文件,以确保该文件与原始文件具有相同的文件大小。然后使用RandomAccessFile写入它(多次写入)。它存储下载的字节位置您希望始终将文件存储在磁盘上以供后续读取吗?