簡體   English   中英

readline在Java / Scala中的奇怪行為

[英]Strange behaviour of readline in Java/Scala

我遇到了一個非常奇怪的問題。 我正在嘗試讀取正在執行的命令的結果。 代碼永遠不會到達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();
}

真奇怪……我的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對象中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM