Java / Scala中readline的奇怪行为

时间:2013-05-08 16:31:09

标签: java scala bufferedreader readline inputstreamreader

我遇到了一个非常奇怪的问题。我试图读取我正在执行的命令的结果。代码永远不会到达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();
}

1 个答案:

答案 0 :(得分: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对象中。