我尝试将字符串发送到我的InputStream

String _source = "123";
InputStream in = new ByteArrayInputStream(_source.getBytes("UTF-8"));
tempLab2.readR(in);

String _source2 = "321";
in.read(_source2.getBytes());
_myClass.readR(in);


当我创建新的ByteArrayInputStream并将_source设置为参数时,则一切正常。我的方法readR不等待任何\nEOF字符并读取123


  请输入R:
  
  R:123


readR方法:

public void readR(InputStream inpSteram) {
    Scanner tScanner = new Scanner(inpSteram);
    System.out.println("Please enter R:");
    _R = tScanner.nextDouble();
    System.out.println("R: " + _R);
}


但是,如果我将_source2in.read(_source2.getBytes())一起发送,则我的Scanner正在等待,并且我只能看到


  请输入R:


有任何想法吗?

最佳答案

线

in.read(_source2.getBytes());


不会将新信息添加到输入流,而是清空它(如果有更多数据的话)。因此输入流已耗尽。

您只需要在下一次调用readR之前创建一个新的输入流即可。所以:

String _source2 = "321";
in = new ByteArrayInputStream(_source2.getBytes("UTF-8"));
_myClass.readR(in);

10-08 11:10