我正在嘗試讀取cmd命令的結果(例如dir)。創建完成後,我使用BufferedReader
和InputStreamReader
。出於某種原因,BufferedReader
一直空着,即使我知道必須讀取一些輸出。在java中輸出cmd命令的問題
這裏是我使用的代碼:
String[] str = new String[] {"cmd.exe", "/c",
"cd", "c:\\",
"dir", "/b", "/s"
};
Runtime rt = Runtime.getRuntime();
try{
Process p = rt.exec(str);
InputStream is =p.getInputStream();
System.out.println(is.available());
InputStreamReader in = new InputStreamReader(is);
StringBuffer sb = new StringBuffer();
BufferedReader buff = new BufferedReader(in);
String line = buff.readLine();
System.out.println(line);
while(line != null)
{
sb.append(line + "\n");
System.out.println(line);
line = buff.readLine();
}
System.out.println(sb);
if (sb.length() != 0){
File f = new File("test.txt");
FileOutputStream fos = new FileOutputStream(f);
fos.write(sb.toString().getBytes());
fos.close();
}
}catch(Exception ex)
{
ex.printStackTrace();
}
process.getErrorStream()也返回空? – 2010-02-04 16:57:20
是 - ErrorStream和InputStream都有0個字節可用 – chama 2010-02-04 17:01:22
我只是再次運行它,並且錯誤流不是空的。當我讀取錯誤流時,它會打印出「系統找不到指定的路徑」,這不完全合理,但至少它是某種東西。 – chama 2010-02-04 17:05:58