我試圖通過Windows上的CMD(Linux上的終端)直接運行命令。我有以下代碼。它的表現非常奇怪。首先,運行程序時不打印任何東西。其次,當調試並逐步完成時,程序將打印默認的CMD文本和輸入行。最後,我似乎無法寫入CMD,因此它會執行命令。這是我的代碼。我猜這可能是一個線程問題,但我不熟悉運行時。使用CMD作爲過程
Runtime r = Runtime.getRuntime();
try {
Process p = r.exec("cmd");
InputStream iStream = p.getInputStream();
BufferedReader sReader = new BufferedReader(new InputStreamReader(iStream));
while(sReader.ready()) {
System.out.print((char)sReader.read());
}
OutputStream oStream = p.getOutputStream();
BufferedWriter sWriter = new BufferedWriter(new OutputStreamWriter(oStream));
sWriter.write("mkdir test");
sWriter.newLine();
while(sReader.ready()) {
System.out.print((char)sReader.read());
}
} catch(Exception e) {
e.printStackTrace();
}
而且我的輸出調試,並通過加大時,(沒有輸出顯示當其運行)
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
D:\workspaces\Maven\Command Line>
是否有一個原因,您使用'cmd'而不是直接運行每個命令? – unholysampler
@unholysampler:如果這個目的是爲了在Windows上運行,它需要這樣做(或者'cmd/c mkdir test'作爲一行)。 'mkdir'內置於Windows命令處理器;它不是一個單獨的可執行文件。當然,爲什麼您需要使用'cmd' [而不是標準庫]運行'mkdir'命令(http://download.oracle.com/javase/6/docs/api/java/io/File.html #mkdir())超出了我。 – ig0774
我沒有使用mkdir,我只是用它作爲一個簡單的例子。實際的CMD命令很長且很難看,動態值 – Spidy