【问题标题】:Java: use NIO with System.in [duplicate]Java:在 System.in 中使用 NIO [重复]
【发布时间】:2009-12-16 15:13:53
【问题描述】:

是否可以将 NIO 与 System.in 一起使用?

我想以某种方式将“stdin”视为可选频道。有没有人找到办法做到这一点?

【问题讨论】:

    标签: java nio system.in


    【解决方案1】:

    我不知道SelectableChannel,但您可以将InputStream 转换为ReadableByteChannel

    using java.nio.channels.Channels;
    
    ...
    
    ReadableByteChannel in = Channels.newChannel(System.in);
    

    【讨论】:

      【解决方案2】:

      您可以创建一个Pipe 和一个自定义线程来读取标准输入并写入管道。

      一旦你有了Pipe,你就可以得到输入通道。

      【讨论】:

        【解决方案3】:

        重复:

        How to get SelectableChannel from an InputStream?

        hmmm...再想一想,对于标准输入,可能有一个解决方案。我找到了这个参考:

        http://www.javafaq.nu/java-example-code-346.html

        特别是:

        SystemInPipe.java(将标准输入封装为可选通道的类)

        【讨论】:

        • 我很欣赏那个人在 SystemInPipe 中尝试做的事情,但它仍然没有比产生一个守护线程来轮询它好多少。问题是你不能中断那个线程(永远)。
        • 这是一个典型的例子,说明为什么在 StackOverflow 上强烈反对主要是链接的答案。 javafaq.nu 的链接已失效,因此答案毫无价值。
        猜你喜欢
        • 2011-07-26
        • 1970-01-01
        • 1970-01-01
        • 2015-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多