いくつかの簡単なコマンドを使用して、Windows コマンド プロンプト用の Java GUI を作成しようとしています。追加の入力に問題があります。「dir」コマンドを実行できますが、「del」コマンドを実行するときに確認を行う必要がありますが、確認メッセージを出力できないようです。
public static void main(String args[])
{
try {
Process p = Runtime.getRuntime().exec("cmd /c dir");
read(p);
} catch (IOException e) {
e.printStackTrace();
}
}
private static void read(Process p)
{
try{
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while((line=input.readLine()) != null) {
System.out.println(line);
}
}
catch(IOException e1) { e1.printStackTrace(); }
}
出力:
Volume in drive E has no label.
Volume Serial Number is E9ED-7E32
Directory of E:\Code\workspace\Project
04/11/2012 11:07 PM <DIR> .
04/11/2012 11:07 PM <DIR> ..
04/11/2012 09:53 PM 301 .classpath
04/11/2012 09:53 PM 383 .project
04/11/2012 09:53 PM <DIR> .settings
04/12/2012 12:09 AM <DIR> bin
04/12/2012 12:09 AM <DIR> src
04/11/2012 11:07 PM <DIR> test
2 File(s) 684 bytes
6 Dir(s) 429,106,937,856 bytes free
しかし、これを実行するとハングアップしますline=input.readLine()
public static void main(String args[])
{
try {
Process p = Runtime.getRuntime().exec("cmd /c del test");
read(p);
OutputStream oStream = p.getOutpuStream();
BufferedWriter sWriter = new BufferedWriter(newOutputStreamWriter(oStream));
sWriter.write("y");
sWriter.newLine();
oStream.close();
read(p);
} catch (IOException e) {
e.printStackTrace();
}
}
このぶら下がりを防ぐにはどうすればよいですか?また、確認の「y」が正しく送信されていないことも懸念されます。出力を読んで入力を書くべきだと思いますが、これはオンラインの複数のサイトで見つけた方法です。どんな助けでも大歓迎です。