在我的一台RedHat Linux服务器上安装了几台设备。 / dev / ap和/ dev / reuter。他们是美联社和路透社的新闻提要。在unix命令行中,我可以执行“cat / dev / ap”并等待直到消息进入feed并将其打印到stdout。只要流中有一个暂停cat就完成了。我尝试了“更多”并得到了相同的结果,同样少了-f(完整的msg,可能是运气)而tail -f在一小时内没有输出。
我知道这些是流,但是当我尝试在新的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();
}
}
}
夫妻问题:
1.某些unix命令是否仅限于从文件中打开流?例如尾巴?
2.我在Java方面做错了什么我无法捕获输出?
错误的流类型,错误的包装类型?
吉姆
答案 0 :(得分:4)
您的方法看似合理,但readLine()
对于构成一行文字的内容非常特别。您可以查看原始流:
cat /dev/ap | hexdump -C
你也可以试试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();