我需要创建一个 java 实用程序,以便我们团队中的一个过程是自动化的。现有流程调用可执行文件,依次进行业务处理。我为此写了一个小程序
FileInputStream fstream;
try {
String [] cmd = new String[3];
if(System.getProperty("os.name").toLowerCase().contains("win")){
cmd[0] = "cmd.exe";
cmd[1] = "/C";
} else{
cmd[0] = "/bin/sh";
cmd[1] = "-c";
}
fstream = new FileInputStream("C:\\JavaProgram.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String FileLine,FileLine1;
//Read File Line By Line
while ((FileLine = br.readLine()) != null)
{
cmd[2]=FileLine;
ProcessBuilder proc = new ProcessBuilder(cmd);
Process p = null;
proc.redirectErrorStream(true);
System.out.println("Starting Process "+ FileLine);
p = proc.start();
BufferedReader br1 = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((FileLine1 = br1.readLine()) != null)
{
System.out.println("Output"+ FileLine1);
}
int exitValue = p.waitFor();
System.out.println("\nExit Value is " + exitValue);
}
br.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
程序读取包含要按顺序执行的程序列表的 JavaProgram 文件。现在我有以下查询:
- 该进程在后台运行并进行监控,我必须签入任务管理器。有什么办法可以让这个进程在前台运行。
- 在某些情况下,程序会导致错误。这是捕获错误的正确方法,即基于
waitfor()
输出。当前逻辑只显示了值[稍后我将对其进行增强以显示正确的错误消息] - 这是处理此要求的最佳方法吗[请忽略此时的基本冗余/额外处理,因为它处于开发阶段]
- 它将执行的某些程序需要管理员权限。是否需要任何额外的代码
- 还有什么要注意的吗??