我正在尝试将数据从一个程序传递MainProgram到另一个TestProgram我使用反射调用的程序。为此,我重新路由Standard.in到ByteArrayOutputStream包含我要传输的数据的路径。然后使用 a和TestProgram读取。我在for循环中多次执行整个事情。问题是这样的:第一次,一切正常,从第二次开始,读取. Java 文档指出,如果到达流的末尾,将返回。但是流中肯定有数据,而我的也是0。为什么会突然认为是空的或在流的末尾? Standard.inBufferedReaderreadLine()TestProgramnullSystem.inBufferedReadernullposByteArrayOutputStreamBufferedReaderSystem.in
这是操作流和调用方法的代码:
for(int i = 0; i < numberOfCases; i++) {
Byte[] paramBytes = getCurrentParamBytes();
InputStream inputStream = new BufferedInputStream(new ByteArrayInputStream(paramBytes));
System.setIn(inputStream);
String[] params = null;
testProgram.invoke(null, (Object) params);
}
这是从以下代码读取的代码System.in:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String current = in.readLine();
我已经向自己保证了System.in使用 Eclipse 调试模式的状态,一切都很好。它只从null第二次调用TestProgrammain 方法开始读取的事实也让我非常困惑。特别是,因为我检查的所有值都与第一次完全相同(当然,流中的数据除外)。
可悲的是,我无法更改 the 的用法,BufferedReader因为TestProgram不是我的课程,必须按原样使用。
任何帮助将不胜感激。