在我的一台 RedHat Linux 服务器上已经设置了几台设备。/dev/ap 和 /dev/reuter。它们是美联社和路透社的新闻提要。在 unix 命令行中,我可以执行“cat /dev/ap”,它会一直等到消息从提要出现并将其打印到标准输出。一旦流中出现暂停, cat 就会完成。我尝试了“更多”并得到了相同的结果,同样的结果是 less -f(完整的味精,可能是运气)和 tail -f 在一个小时内没有输出。
我知道这些是流,但是当我尝试在 new Reader("/dev/ap") 上打开 Java BufferReader 时,我没有得到任何输出。使用以下运行方法:
public void run() {
String line = null;
while(true) {
try {
while((line = bsr.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
几个问题:
1. 某些 unix 命令是否仅限于从文件打开流?例如尾巴?2.我在Java方面做错了什么,我无法捕获输出?错误的流类型,错误的包装器类型?吉姆
您的方法似乎很合理,但readLine()对一行文本的构成非常讲究。您可能会查看原始流:
cat /dev/ap | hexdump -C
Run Code Online (Sandbox Code Playgroud)
您也可以尝试read(),如以下片段所示/dev/zero:
BufferedReader in = new BufferedReader(new FileReader("/dev/zero"));
for (int i = 0; i < 10; i++) {
System.out.print(in.read() + " ");
}
System.out.println();
in.close();
Run Code Online (Sandbox Code Playgroud)