在Java中如何为System.in赋值?

Ang*_*gom 5 java

可能重复:
将数据写入System.in

我们知道System.in(标准输入)已连接到控制台.因此,每当我们在控制台中写入时,它都将流向此流.但有没有办法将值传递给此标准输入而无需从控制台进入,即喜欢System.in = "ABCD".我只是想模仿,因为值从控制台传递.

mth*_*ers 13

就在这里.使用System.setIn(InputStream in).

您也可以提供任何子类型InputStream,因此如果您想提供特定值,您可以使用StringBufferInputStream,如下所示:

StringBufferInputStream s = new StringBufferInputStream("ABCD");
System.setIn(s);
Run Code Online (Sandbox Code Playgroud)

  • 当我读到它时,你已经在第二个线程中创建了一个`Scanner`,*在第一个线程中更改`System.in`之前.扫描程序在创建期间保存对提供给它的`InputStream`的引用.如果你在第二个线程中创建`Scanner`之前从第一个线程*调用`System.setIn(...)`,它应该没有问题. (2认同)