从unix设备读取数据

时间:2010-06-10 17:27:45

标签: java unix device

在我的一台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方面做错了什么我无法捕获输出? 错误的流类型,错误的包装类型? 吉姆

1 个答案:

答案 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();

附录:对于串行I / O,请考虑RXTXsimilar个库。