Java 清除bufferedReader和块以获得更多输入
我使用bufferedReader从FIFO队列读取数据,数据由C程序放入FIFO队列,该程序从UART读取数据(C程序尚未运行,因此我使用Java 清除bufferedReader和块以获得更多输入,java,fifo,Java,Fifo,我使用bufferedReader从FIFO队列读取数据,数据由C程序放入FIFO队列,该程序从UART读取数据(C程序尚未运行,因此我使用echo“test”>MY_FIFO进行测试) 我想让我的java程序阻塞直到有数据,并且只在有数据时执行。它第一次执行此操作,但一旦将某些内容放入fifo,fif.readLine()会重复返回null 有没有办法“重置”bufferedReader,以便下次调用readLine()时它会再次阻塞?目前我能想到的唯一解决办法是在阅读阅读器之后重新初始化它
echo“test”>MY_FIFO
进行测试)
我想让我的java程序阻塞直到有数据,并且只在有数据时执行。它第一次执行此操作,但一旦将某些内容放入fifo,fif.readLine()
会重复返回null
有没有办法“重置”bufferedReader,以便下次调用readLine()
时它会再次阻塞?目前我能想到的唯一解决办法是在阅读阅读器之后重新初始化它
编辑:我使用的队列是一个FIFO队列(一个文件),通过调用
mkfifo()
HF调试FIFO队列创建。只要底层数据源正确实现,所有基于流I/O的类都会隐式阻塞。不要责怪信使我不明白你的意思,我不是责怪信使(在这种情况下是bash)。我想它不是阻塞,因为它看到的是“流的尽头”,这是我不想要的,我希望流永远不会结束。不知道你在问什么。。。。你可以读这个。我认为您可以使用Scanner
类-看这里是在内存中维护的队列,还是使用某种持久性存储介质(如文件)来存储队列数据?