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

本文介绍了一个Java程序示例,使用J2SE 5.0的ProcessBuilder类执行外部程序来获取Windows环境下物理网卡的MAC地址。该方法相较于Runtime.exec更为便捷,并展示了如何解析输出结果。
讲述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.youkuaiyun.com");  //登录网站
          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>

 

本系统旨在构建一套面向高等院校的综合性教务管理平台,涵盖学生、教师及教务处三个核心角色的业务需求。系统设计着重于实现教学流程的规范化与数据处理的自动化,以提升日常教学管理工作的效率与准确性。 在面向学生的功能模块中,系统提供了课程选修服务,学生可依据培养方案选择相应课程,并生成个人专属的课表。成绩查询功能支持学生查阅个人各科目成绩,同时系统可自动计算并展示该课程的全班最高分、平均分、最低分以及学生在班级内的成绩排名。 教师端功能主要围绕课程与成绩管理展开。教师可发起课程设置申请,提交包括课程编码、课程名称、学分学时、课程概述在内的新课程信息,亦可对已开设课程的信息进行更新或撤销。在课程管理方面,教师具备录入所授课程期末考试成绩的权限,并可导出选修该课程的学生名单。 教务处作为管理中枢,拥有课程审批与教学统筹两大核心职能。课程设置审批模块负责处理教师提交的课程申请,管理员可根据教学计划与资源情况进行审核批复。教学安排模块则负责全局管控,包括管理所有学生的选课最终结果、生成包含学号、姓名、课程及成绩的正式成绩单,并能基于选课与成绩数据,统计各门课程的实际选课人数、最高分、最低分、平均分以及成绩合格的学生数量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值