利用Java调用可执行命令[整理]

讲述process:http://lavasoft.blog.51cto.com/62575/15599

From: http://java.chinaitlab.com/JDK/27511.html

这个例子使用了J2SE5.0的ProcessBuilder类执行外部的程序,相对于 Runtime.exec ,它更方便,可以设置环境变量等。这里使用它在windows下读取物理网卡的地址      package com.kuaff.jdk5package;      import java.io.IOException;   import java.io.InputStream;   import java.util.ArrayList;   import java.util.List;      public class ProcessBuilderShow   {   public static List getPhysicalAddress()   {   Process p = null;   //物理网卡列表   List address = new ArrayList();      try   {   //执行ipconfig /all命令   p = new ProcessBuilder("ipconfig", "/all").start();   }   catch (IOException e)   {   return address;   }   byte[] b = new byte[1024];   StringBuffer sb = new StringBuffer();   //读取进程输出值   InputStream in = p.getInputStream();   try   {   while (in.read(b)>0)   {   sb.append(new String(b));   }   }   catch (IOException e1)   {   }   finally   {   try   {   in.close();   }   catch (IOException e2)   {   }   }   //以下分析输出值,得到物理网卡   String rtValue = sb.substring(0);   int i = rtValue.indexOf("Physical Address. . . . . . . . . :");   while(i>0)   {   rtValue = rtValue.substring(i + "Physical Address. . . . . . . . . :".length());   address.add(rtValue.substring(0,18));   i = rtValue.indexOf("Physical Address. . . . . . . . . :");   }   return address;   }   public static void main(String[] args)   {   List address = ProcessBuilderShow.getPhysicalAddress();   for(String add:address)   {   System.out.printf("物理网卡地址:%s%n", add);   }   }   }

/**
 * Add one sentence class summary here.
 * Add class description here.
 *
 * @author lxx
 * @version 1.0, 2004-11-16
 */
public class TestCmd {
    public TestCmd(){}
   /* public  void main(String args[]){
        try {
          Process process = Runtime.getRuntime().exec("cmd.exe  /c  start  http://www.csdn.net");  //登录网站
          Process process = Runtime.getRuntime().exec("cmd.exe  /c  start  ping 10.144.98.100");  //调用Ping命令
        }catch (Exception  e)
        {
            e.printStackTrace();
            }  
        
      }
    }  */

//在项目下建立一个名为hello的文件夹
    public static void main(String[] args) {
        System.out.println(System.getProperty("user.dir"));
        createFolder("hello");
      }

     private static void createFolder(String folderName) {
       String temp = System.getProperty("user.dir") + java.io.File.separator+ folderName;
       java.io.File f = new java.io.File(temp);
       f.mkdirs();
     }

 }



在Java程序中获取当前运行程序的路径

import java.io.*;

public class Test {

       public static void main(String[] args) {

              File directory  = new File(".");

              try {

                     File newPath = new File(directory.getCanonicalPath()+"NewFolder");

                     newPath.mkdir();

              }catch(Exception exp)

              {

                     exp.printStackTrace();

              }

       }

}

//File directory       = new File(".");

//directory.getCanonicalPath();取得当前路径


在Jsp页面中调用Ping命令---PingIP.jsp

<%@ page language="java" contentType="text/html; charset=gb2312"  import="java.io.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ping IP测试页面</title>
</head>

<body>
<div align="center">
  <h2>Ping IP测试页面</h2>
</div> 

<%  
   Runtime  runtime  =  Runtime.getRuntime();  
   Process  process  =null;  
   String  line=null;  
   InputStream  is  =null;  
   InputStreamReader  isr=null;  
   BufferedReader  br  =null;  
   String  ip="www.sina.com.cn";  //待Ping的地址
    try  
   {  
       process  =runtime.exec("ping  "+ip);  
       is  =  process.getInputStream();  
       isr=new  InputStreamReader(is);  
       br  =new  BufferedReader(isr);  
       out.println("<pre>");  
       while(  (line  =  br.readLine())  !=  null  )  
       {  
           out.println(line);  
           out.flush();  
       }  
       out.println("</pre>");  
       is.close();  
       isr.close();  
       br.close();  
   }  
   catch(IOException  e  )  
   {  
       out.println(e);  
       runtime.exit(1);  
   }  
%>  

</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值