1

非常に奇妙な問題が発生しました。実行中のコマンドの結果を読み取ろうとしています。コードが println-Statement に到達することはありません。出力の終わりに達した場合、プログラムを「ハングアップ」するだけです。失敗も例外もありません。

私のプロジェクトは、Scala と Java を組み合わせたものです。したがって、ソリューションがどの言語であるかは問題ではありません。両方で試しました。私のプロジェクトのエンコーディングは Cp1252 です。

これが私のコードです

var fileScript = Runtime.getRuntime().exec(PathOfScript)
var isr:InputStreamReader  = new InputStreamReader(fileScript.getInputStream())
var in = new BufferedReader(isr)
var line:String = ""
try {
  while ({line = in.readLine();  line!= null}) {
    println("line: "+line)
  }
  println("OUTSIDE !!!");
  in.close();
}
4

1 に答える 1

1

それは奇妙です...私のJavaバージョンは問題なく動作します:

        InputStreamReader isr = new InputStreamReader(new FileInputStream("c:\\anyfile"));
        BufferedReader in = new BufferedReader(isr);
        String line = "";
        try {
          while ((line = in.readLine()) != null) {
            System.out.println("line: "+line);
          }
          System.out.println("OUTSIDE !!!");
          in.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }

問題は fileScript にあると思います。ストリームを提供して閉じない場合、while ループで null を取得することはありません。その部分を確認してください。通常のファイルで試してください(私の例で行ったように)。機能する場合、問題は間違いなく fileScript オブジェクトにあります。

于 2013-05-08T16:48:33.087 に答える