如何检查输入流是否包含数据?

时间:2009-08-13 09:01:27

标签: java

我正在使用javax.comm包在SerialPort上执行读写操作。

我在InputStream中创建了一个InputStream类型的对象;

我的问题是......

  1. 无论SerialPort上的数据是否可用,in.available()始终返回零,因为我无法判断字节是否可用。
  2. 如果我直接使用in.read(),它似乎永远会阻止执行..

    请帮忙......

    等待你的回复..

    您也可以通过我的电子邮件地址发送邮件给我。

    期待你的回复......

    UTSAV

1 个答案:

答案 0 :(得分:1)

这是块I / O的典型行为。 read()将阻塞直到某些字节可用,EOF或错误。您应该创建一个新线程,然后等待更多数据。

不要使用available()调用,因为它可能会创建一个快速循环并提高CPU使用率。如果你真的想在一个线程中做这件事,那就看看NIO。