0

Processさて、私はandRuntimeクラスを試していて、問題に遭遇しました。このコマンド : を実行しようとするとcmd /c dir、出力が null になります。ここに私のコードのスニペットがあります:

try {
    Runtime runtime = Runtime.getRuntime();
    Process process = runtime.exec("cmd /c dir");

    BufferedReader output = new BufferedReader(new InputStreamReader(process.getInputStream()));

    //BufferedReader serverOutputError = new BufferedReader(new InputStreamReader(serverStart.getErrorStream()));

    String line = null;

    while ((output.readLine()) != null) {
        System.out.println(line);
    }

    int exitValue = process.waitFor();
    System.out.println("Command exited with exit value: " + exitValue);

    process.destroy();
    System.out.println("destroyed");
} catch (IOException e) {
    e.printStackTrace();
} catch (InterruptedException e) {
    e.printStackTrace();
}

そして、私は出力のためにこれを取得します:

(18 lines of just "null")
Command exited with exit value: 0
destroyed

何か案は?

4

4 に答える 4

2

lineコンソールへの書き込みに使用している変数を設定することはありません。

交換

while ((output.readLine()) != null) {

while ((line = output.readLine()) != null) {
于 2012-08-03T14:26:21.363 に答える
1

このようにしてみてください:

String line = output.readLine();

while (line != null) {
    System.out.println(line);
    line = output.readLine();
}
于 2012-08-03T14:27:05.733 に答える
1
while ((output.readLine()) != null) {
    System.out.println(line);
}

する必要があります

while ((line = output.readLine()) != null) {
    System.out.println(line);
}
于 2012-08-03T14:30:47.977 に答える
0
String line = null;
while ((output.readLine()) != null) {
        System.out.println(line);
    }

これがあなたの問題です。ループ内の何かに line を設定することはありません。ヌルのままです。line を output.readLine() の値に設定する必要があります。

while((line = output.readLine()) != null)
于 2012-08-03T14:28:30.800 に答える