小弟的项目里面涉及到这方面的应用,具体如下:
1。有一个外部程序,从键盘读入一串字符,然后显示,C语言代码如下
#include <stdio.h>
main()
{
char s[100];
printf("Please input\n");
scanf("%s", s);
printf("Output: %s\n", s);
}编译这个程序得到可执行文件test.exe。现在小弟我要在Java程序里面调用这个Windows本地程序,那么我的代码如下:PrintWriter writer = null;
try {
final Process p = Runtime.getRuntime().exec("test.exe");
if(errorMessage != null) {
System.out.println("Output: " + errorMessage);
}
//输入
writer = new PrintWriter(p.getOutputStream());
writer.println("12345\n");
writer.close();
p.waitFor(); errMsg = p.getInputStream();
byte [] buffer = new byte[1024];
int len = errMsg.read(buffer);
errMsg.close();
String errorMessage = new String(buffer, 0, len); if(errorMessage != null) {
System.out.println("Output: " + errorMessage);
}
}
catch (Exception e) {
e.printStackTrace();
}执行之后程序没有任何输出。谁能看出问题所在?
1。有一个外部程序,从键盘读入一串字符,然后显示,C语言代码如下
#include <stdio.h>
main()
{
char s[100];
printf("Please input\n");
scanf("%s", s);
printf("Output: %s\n", s);
}编译这个程序得到可执行文件test.exe。现在小弟我要在Java程序里面调用这个Windows本地程序,那么我的代码如下:PrintWriter writer = null;
try {
final Process p = Runtime.getRuntime().exec("test.exe");
if(errorMessage != null) {
System.out.println("Output: " + errorMessage);
}
//输入
writer = new PrintWriter(p.getOutputStream());
writer.println("12345\n");
writer.close();
p.waitFor(); errMsg = p.getInputStream();
byte [] buffer = new byte[1024];
int len = errMsg.read(buffer);
errMsg.close();
String errorMessage = new String(buffer, 0, len); if(errorMessage != null) {
System.out.println("Output: " + errorMessage);
}
}
catch (Exception e) {
e.printStackTrace();
}执行之后程序没有任何输出。谁能看出问题所在?
String command = "xxx";
final Process p = Runtime.getRuntime().exec("test.exe" + command);
试试这样吧,我觉得这样应该是可以的