我试图从Java运行多个命令shell。我能够做到这一点(并使用PrintWriter在控制台中获取输出)。但是,我希望能够在单独的字符串中获取每个命令的输出。那可能吗?在Java中使用PrintWriter
下面是代码的一部分:
File wd = new File("/bin");
Process proc = null;
BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(proc.getOutputStream())), true);
out.println("cd ..");
out.println("ls");
System.out.println("moving to /var directory");
out.println("cd /var/");
out.println("ls");
//get output of ls command in string variable
out.println("cd ..");
out.println("cd /etc/");
out.println("ls -a");
out.println("ps");
out.println("exit");
try {
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
proc.waitFor();
in.close();
out.close();
proc.destroy();
}
catch (Exception e) {
e.printStackTrace();
}
也许你可以在Java(File.listFiles())中执行'ls',然后向'ps'调用操作系统(或者让一些Java库也可以这么做)? – Thilo 2012-07-13 08:29:01
感谢您的回应,但将每个命令的输出放在一个文件中将不是有用的(在文件中写入然后解析它)...我仍在寻找将PrintWriter转换为字符串的方法......它将解决它。 .. – Mas 2012-07-13 08:43:42