无法读取InputStream
问题描述:
我正在使用以下代码从Runtime.Exec()
读取InputStream
。无法读取InputStream
CODE:
private String inputstreamReader(String[] shellinput) {
InputStream inputstream = null;
String isrval = null;
System.out.println("Entering inputstreamReader");
try {
inputstream = Runtime.getRuntime().exec(shellinput)
.getInputStream();
System.out.println("Tried getRuntime().exec :: "+inputstream.read());
} catch (IOException e) {
System.out.println("Failed getRuntime().exec");
e.printStackTrace();
}
InputStreamReader inputstreamreader = new InputStreamReader(inputstream);
try {
isrval = new BufferedReader(inputstreamreader).readLine();
} catch (IOException e1) {
e1.printStackTrace();
}
System.out.println("TEMPfile is "+isrval);
return isrval;
}
但它返回:
堆栈跟踪:
02-28 19:34:20.663: I/System.out(20892): Entering inputstreamReader
02-28 19:34:20.694: I/System.out(20892): Tried getRuntime().exec :: -1
02-28 19:34:20.694: I/System.out(20892): TEMPfile is null
任何想法,为什么出现这种情况?
答
要回答你的问题,你可能EXEC失败,没有任何输出,你可以从该行看到:
Tried getRuntime().exec :: -1
“-1”意味着你已经到达流的末尾。这将导致
new BufferedReader(inputstreamreader).readLine();
返回空值,这就是你所看到的:
TEMPfile is null
什么是你想在你的exec运行?你确定这是一个有效的命令吗?此外,你知道你正在读输入的第一个字节,当你inputstream.read(),对不对?无论您对其余部分的期望如何,这是该代码中的一个错误。 – claesv 2012-02-28 14:30:46