`
sealbird
  • 浏览: 583982 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Runtime.getRuntime().exec(cmd) cd

    博客分类:
  • JAVA
 
阅读更多
BashLinux.如果要在java程序里执行一条linux可以用下面的写法


Java代码  
1.Process process = Runtime.getRuntime().exec(cmd);   
2.process.waitFor();  
Process process = Runtime.getRuntime().exec(cmd);
process.waitFor(); 但是当遇到像cd这样的命令时,上面的这种写法切不管用,很多时候我们以为是命令输错了或是文件找不到。

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


Java代码  
1.File wd = new File("/bin");    
2.System.out.println(wd);    
3.Process proc = null;    
4.try {    
5.   proc = runtime.getruntime().exec("/bin/bash", null, wd);    
6.}    
7.catch (IOException e) {    
8.   e.printStackTrace();    
9.}    
10.if (proc != null) {    
11.   BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));    
12.   PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(proc.getOutputStream())), true);    
13.   out.println("cd ..");    
14.   out.println("pwd");    
15.   out.println("exit");    
16.   try {    
17.      String line;    
18.      while ((line = in.readLine()) != null) {    
19.         System.out.println(line);    
20.      }    
21.      proc.waitFor();    
22.      in.close();    
23.      out.close();    
24.      proc.destroy();    
25.   }    
26.   catch (Exception e) {    
27.      e.printStackTrace();    
28.   }    
29.}  
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只要输入你需要执行的命令就行。

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



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics