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,不管您对它的其余部分有什么期望。