我们知道System.in
(标准输入)已连接到控制台。因此,每当我们在控制台中写入时,它都将流向此流。但有没有办法将值传递给此标准输入而无需从控制台输入,即像System.in = "ABCD"
。我只想模仿价值从控制台传递。
答案 0 :(得分:13)
是的,有。使用System.setIn(InputStream in)
。
您也可以提供InputStream
的任何子类型,因此,如果您想提供特定值,可以使用StringBufferInputStream
,如下所示:
StringBufferInputStream s = new StringBufferInputStream("ABCD");
System.setIn(s);
答案 1 :(得分:0)
我认为不要让你的方法直接访问System.in:
public void process() {
byte b[] = new byte[4000];
int bytesRead = System.in.read(b);
...
}
您应该将其分解,以便将输入流传递到方法中:
public void run() {
process(System.in);
}
public void process(InputStream is) {
byte b[] = new byte[4000];
int bytesRead = is.read(b);
...
}
这为您提供了相同的行为,但是您也可以使用自己设计的输入流调用业务逻辑以进行测试。