[英]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.