有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从unix设备读取数据

在我的一台RedHat Linux服务器上安装了两台设备/dev/ap和/dev/reuter。它们是美联社和路透社的新闻源。在unix命令行中,我可以执行“cat/dev/ap”,它会等待消息从提要中下来并打印到stdout。一旦流中出现暂停,cat就会完成。我尝试了“更多”并得到了同样的结果,同样的结果是少-f(完整的味精,可能很幸运),而tail-f在一个小时内没有输出

我知道这些是流,但当我尝试在新的阅读器(“/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命令是否仅限于从文件打开流?e、 g.尾巴? 2.我在Java方面做错了什么,无法捕获输出? 错误的流类型,错误的包装类型? 吉姆


共 (1) 个答案

  1. # 1 楼答案

    你的方法看起来不错,但是^{}对文本行的构成非常特别。您可以查看原始流:

    cat /dev/ap | hexdump -C
    

    您还可以尝试^{},如从/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库。