我正在尝试将数据从一个程序传递MainProgram
到另一个TestProgram
我使用反射调用的程序。为此,我重新路由Standard.in
到ByteArrayOutputStream
包含我要传输的数据的路径。然后使用 a和TestProgram
读取。我在for循环中多次执行整个事情。问题是这样的:第一次,一切正常,从第二次开始,读取. Java 文档指出,如果到达流的末尾,将返回。但是流中肯定有数据,而我的也是0。为什么会突然认为是空的或在流的末尾? Standard.in
BufferedReader
readLine()
TestProgram
null
System.in
BufferedReader
null
pos
ByteArrayOutputStream
BufferedReader
System.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
第二次调用TestProgram
main 方法开始读取的事实也让我非常困惑。特别是,因为我检查的所有值都与第一次完全相同(当然,流中的数据除外)。
可悲的是,我无法更改 the 的用法,BufferedReader
因为TestProgram
不是我的课程,必须按原样使用。
任何帮助将不胜感激。