Runtime.getRuntime().exec(cmd) cd

如果要在java程序里执行一条linux可以用下面的写法

Process process = Runtime.getRuntime().exec(cmd);
process.waitFor();

 但是当遇到像cd这样的命令时,上面的这种写法切不管用,很多时候我们以为是命令输错了或是文件找不到。

现在提供一种新的执行命令方法:

File wd = new File("/bin"); 
System.out.println(wd); 
Process proc = null; 
try { 
   proc = runtime.getruntime().exec("/bin/bash", null, wd); 
} 
catch (IOException e) { 
   e.printStackTrace(); 
} 
if (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("pwd"); 
   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(); 
   } 
}
 

这种写法相当于把整个bash环境拿进来了,out.println只要输入你需要执行的命令就行。

看上去很复杂,其实很实用,只要能在命令行执行的命令,都可以拿来试试。

你可能感兴趣的:(linux,bash)