我尝试将字符串发送到我的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不等待任何\n
或EOF
字符并读取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);
}
但是,如果我将
_source2
与in.read(_source2.getBytes())
一起发送,则我的Scanner
正在等待,并且我只能看到请输入R:
有任何想法吗?
最佳答案
线
in.read(_source2.getBytes());
不会将新信息添加到输入流,而是清空它(如果有更多数据的话)。因此输入流已耗尽。
您只需要在下一次调用readR之前创建一个新的输入流即可。所以:
String _source2 = "321";
in = new ByteArrayInputStream(_source2.getBytes("UTF-8"));
_myClass.readR(in);