【发布时间】:2011-03-18 08:20:16
【问题描述】:
我从一个 java 应用程序运行一个启动另一个 java 应用程序的 bat 文件:
ProcessBuilder processBuilder = new ProcessBuilder("path to bat file");
Process process = processBuilder.start();
但该过程永远不会开始,也不会打印任何错误。但是如果我添加以下行:
String resultString = convertStreamToString(process.getInputStream());
之后:处理过程 = processBuilder.start();
地点:
public String convertStreamToString(InputStream is) throws IOException {
/*
* To convert the InputStream to String we use the Reader.read(char[]
* buffer) method. We iterate until the Reader return -1 which means there's
* no more data to read. We use the StringWriter class to produce the
* string.
*/
if (is != null) {
Writer writer = new StringWriter();
char[] buffer = new char[1024];
try {
Reader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
int n;
while ((n = reader.read(buffer)) != -1) {
writer.write(buffer, 0, n);
}
} finally {
is.close();
}
return writer.toString();
} else {
return "";
} }
运行良好!有什么想法吗?
【问题讨论】:
-
您是否需要使用标准输入/输入流与该进程通信?