我有一些代码设置应该运行批处理文件。我不确定,因为它没有在控制台中显示任何内容,但是当我点击JButton PING时,按钮会在点击中保持几秒钟,因此它肯定会处理某些内容。我需要帮助的是将批处理文件输出到我的GUI中的JTextArea。我不确定如何将我的代码导向我的JTextArea,名为" textarea"。有人可以告诉我如何将textarea添加到此代码中以获得输出?谢谢!
JButton btnPingComputer = new JButton("PING");
btnPingComputer.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
try {
// create a new process
// System.out.println("Creating Process...");
Process p = Runtime.getRuntime().exec("c:\\ping.bat");
// get the input stream of the process and print it
InputStream in = p.getInputStream();
for (int i = 0; i < in.available(); i++) {
System.out.println("" + in.read());
}
for (int i = 0; i < in.available(); i++) {
textArea.append(in.read()+"\n");
}
// wait for 10 seconds and then destroy the process
p.destroy();
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
答案 0 :(得分:1)
试试这个:
for (int i = 0; i < in.available(); i++) {
textarea.append(in.read()+"\n");
}
编辑:
我认为in.available()
也可能存在问题。你可以尝试完全改变这个:
String line;
Process p = Runtime.getRuntime().exec("c:\\ping.bat");
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = in.readLine()) != null) {
System.out.println(line);
textarea.append(line);
}
in.close();
答案 1 :(得分:0)
您可以尝试使用此代码,该代码将执行指定的批处理文件,并回读批处理文件回送的任何内容。从那里你应该能够获取输入并将其附加到JTextArea。只要您的蝙蝠回传文本,batOutput就会捕获它。但请注意由于非标准字符导致的格式错误。
public static void main(String[] args) {
String batFile = "C:/test.bat";
try {
ProcessBuilder procBuild = new ProcessBuilder(batFile);
Process proc = procBuild.start();
InputStream streamIn = proc.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(streamIn));
String batOutput = null;
while ((batOutput = br.readLine()) != null) {
System.out.println(batOutput);
}
} catch (Exception e) {
e.printStackTrace();
}
}