将批处理文件输出到 JTextArea
Outputting batch file to JTextArea
我设置了一些代码,据说是 运行 批处理文件。我不确定,因为它没有在控制台中显示任何内容,但是当我单击 JButton PING 时,该按钮会保持单击几秒钟,因此它肯定正在处理某些内容。我需要帮助的是将批处理文件输出到我的 GUI 中的 JTextArea。我不太确定如何将我的代码定向到名为 "textarea" 的 JTextArea。有人可以告诉我如何将 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();
}
}
});
试试这个:
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();
您可以尝试此代码,它将执行指定的批处理文件并读回批处理文件回显的任何内容。从那里您应该能够获取输入并将其附加到 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();
}
}
我设置了一些代码,据说是 运行 批处理文件。我不确定,因为它没有在控制台中显示任何内容,但是当我单击 JButton PING 时,该按钮会保持单击几秒钟,因此它肯定正在处理某些内容。我需要帮助的是将批处理文件输出到我的 GUI 中的 JTextArea。我不太确定如何将我的代码定向到名为 "textarea" 的 JTextArea。有人可以告诉我如何将 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();
}
}
});
试试这个:
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();
您可以尝试此代码,它将执行指定的批处理文件并读回批处理文件回显的任何内容。从那里您应该能够获取输入并将其附加到 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();
}
}