Java:将字符串发送到输入流

Leo*_*Leo 1 java inputstream

我尝试将字符串发送到我的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);
Run Code Online (Sandbox Code Playgroud)

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

请输入 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);
}
Run Code Online (Sandbox Code Playgroud)

但如果我发送_source2in.read(_source2.getBytes())所以我Scanner正在等待,我只看到

请输入 R:

有任何想法吗?

Wou*_*ter 5

线

in.read(_source2.getBytes());
Run Code Online (Sandbox Code Playgroud)

不会向输入流添加新信息,而是将其清空(如果有更多数据)。所以输入流用完了。

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

String _source2 = "321";
in = new ByteArrayInputStream(_source2.getBytes("UTF-8"));
_myClass.readR(in);
Run Code Online (Sandbox Code Playgroud)