Java 无法读取InputStream
我使用以下代码从Java 无法读取InputStream,java,android,Java,Android,我使用以下代码从Runtime.Exec()读取InputStream 代码: private String inputstreamReader(String[] shellinput) { InputStream inputstream = null; String isrval = null; System.out.println("Entering inputstreamReader"); try {
Runtime.Exec()
读取InputStream
代码:
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
但它的回报是:
STACKTRACE:
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();
返回null,这就是您看到的:
TEMPfile is null
你想在你的执行官身上运行什么?你确定这是一个有效的命令吗?另外,当您执行inputstream.read()时,您知道您正在读取输出的第一个字节,对吗?这是这段代码中的一个bug,不管您对它的其余部分有什么期望。