Java调用Windows命令

Java调用Windows命令主要用到两个类:
 
java.lang.Runtime
每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过 getRuntime 方法获取当前运行时。应用程序不能创建自己的 Runtime 类实例。
 
java.lang.Process
ProcessBuilder.start() 和 Runtime.exec 方法创建一个本机进程,并返回 Process 子类的一个实例,该实例可用来控制进程并获取相关信息。Process 类提供了执行从进程输入、执行输出到进程、等待进程完成、检查进程的退出状态以及销毁(杀掉)进程的方法。 对于带有 Process 对象的 Java 进程,没有必要异步或并发执行由 Process 对象表示的进程。
 
下面是个简单例子:
  1. package com.lavasoft;
  2. import java.io.IOException;
  3. import java.io.BufferedReader;
  4. import java.io.InputStream;
  5. import java.io.InputStreamReader;
  6. public class TestCmd {
  7.     public static void main(String args[]) {
  8.         testWinCmd();
  9.         dirOpt();
  10.     }
  11.     public static void testWinCmd() {
  12.         System.out.println("------------------testWinCmd()--------------------");
  13.         Runtime runtime = Runtime.getRuntime();
  14.         System.out.println(runtime.totalMemory());
  15.         System.out.println(runtime.freeMemory());
  16.         System.out.println(runtime.maxMemory());
  17.         System.out.println(runtime.availableProcessors());   //处理器数
  18.         try {
  19.             //执行一个exe文件
  20.             runtime.exec("notepad");
  21.             runtime.exec("C://Program Files//Microsoft Office//OFFICE11//winword.exe c://test.doc");
  22.             //执行批处理
  23.             runtime.exec("c://x.bat");
  24.             //执行系统命令
  25.             runtime.exec("cmd /c dir ");
  26.             runtime.exec("cmd /c dir c://");
  27. //            //-------------- 文件操作 --------------
  28.             runtime.exec("cmd /c copy c://x.bat d://x.txt");   //copy并改名
  29.             runtime.exec("cmd /c rename d://x.txt x.txt.bak"); //重命名
  30.             runtime.exec("cmd /c move d://x.txt.bak c://");    //移动
  31.             runtime.exec("cmd /c del c://x.txt.bak");          //删除
  32.             //-------------- 目录操作 --------------
  33.             runtime.exec("cmd /c md c://_test");          //删除
  34.         } catch (IOException e) {
  35.             e.printStackTrace();
  36.         }
  37.     }
  38.     
  39.     public static void dirOpt() {
  40.         System.out.println("------------------dirOpt()--------------------");
  41.         Process process;
  42.         try {
  43.             //执行命令
  44.             process = Runtime.getRuntime().exec("c://x.bat");
  45.             //取得命令结果的输出流
  46.             InputStream fis = process.getInputStream();
  47.             //用一个读输出流类去读
  48.             BufferedReader br = new BufferedReader(new InputStreamReader(fis));
  49.             String line = null;
  50.             //逐行读取输出到控制台
  51.             while ((line = br.readLine()) != null) {
  52.                 System.out.println(line);
  53.             }
  54.         } catch (IOException e) {
  55.             e.printStackTrace();
  56.         }
  57.     }
  58. }
  59. Java调用Windows命令主要用到两个类:
     
    java.lang.Runtime
    每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过 getRuntime 方法获取当前运行时。应用程序不能创建自己的 Runtime 类实例。
     
    java.lang.Process
    ProcessBuilder.start() 和 Runtime.exec 方法创建一个本机进程,并返回 Process 子类的一个实例,该实例可用来控制进程并获取相关信息。Process 类提供了执行从进程输入、执行输出到进程、等待进程完成、检查进程的退出状态以及销毁(杀掉)进程的方法。 对于带有 Process 对象的 Java 进程,没有必要异步或并发执行由 Process 对象表示的进程。
     
    下面是个简单例子:
    package com.lavasoft;

    import java.io.IOException;
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;


    public class TestCmd {

            public static void main(String args[]) {
                    testWinCmd();
                    dirOpt();
            }

            public static void testWinCmd() {
                    System.out.println( "------------------testWinCmd()--------------------");
                    Runtime runtime = Runtime.getRuntime();
                    System.out.println(runtime.totalMemory());
                    System.out.println(runtime.freeMemory());
                    System.out.println(runtime.maxMemory());
                    System.out.println(runtime.availableProcessors());    //处理器数
                    try {
                            //执行一个exe文件
                            runtime.exec( "notepad");
                            runtime.exec( "C://Program Files//Microsoft Office//OFFICE11//winword.exe c://test.doc");
                            //执行批处理
                            runtime.exec( "c://x.bat");
                            //执行系统命令
                            runtime.exec( "cmd /c dir ");
                            runtime.exec("cmd /c dir c://");

    //            //-------------- 文件操作 --------------

                            runtime.exec( "cmd /c copy c://x.bat d://x.txt");    //copy并改名
                            runtime.exec( "cmd /c rename d://x.txt x.txt.bak"); //重命名
                            runtime.exec("cmd /c move d://x.txt.bak c://");        //移动
                            runtime.exec( "cmd /c del c://x.txt.bak");                    //删除

                            //-------------- 目录操作 --------------
                            runtime.exec( "cmd /c md c://_test");                    //删除
                    } catch (IOException e) {
                            e.printStackTrace();
                    }
            }

           
            public static void dirOpt() {
                    System.out.println( "------------------dirOpt()--------------------");
                    Process process;
                    try {
                            //执行命令
                            process = Runtime.getRuntime().exec( "c://x.bat");
                            //取得命令结果的输出流
                            InputStream fis = process.getInputStream();
                            //用一个读输出流类去读
                            BufferedReader br = new BufferedReader( new InputStreamReader(fis));
                            String line = null;
                            //逐行读取输出到控制台
                            while ((line = br.readLine()) != null) {
                                    System.out.println(line);
                            }
                    } catch (IOException e) {
                            e.printStackTrace();
                    }
            }
    }
     
    x.bat
    del c:/del.txt
    cd D:
    dir
    运行结果:
    ------------------testWinCmd()--------------------
    2031616
    1652120
    66650112
    2
    ------------------dirOpt()--------------------

    D:/_dev_stu/fileopt>del c:/del.txt   

    D:/_dev_stu/fileopt>cd D:   
    D:/_dev_stu/fileopt

    D:/_dev_stu/fileopt>dir
    驱动器 D 中的卷是 DISK1_VOL2
    卷的序列号是 70FB-DFAF

    D:/_dev_stu/fileopt 的目录

    2008-07-18    09:30        <DIR>                    .
    2008-07-18    09:30        <DIR>                    ..
    2008-07-18    09:30        <DIR>                    src
    2008-07-18    09:31                            549 fileopt.iml
    2008-07-18    09:31                        10,292 fileopt.ipr
    2008-07-18    14:27        <DIR>                    classes
    2008-07-18    16:42                        26,265 fileopt.iws
                                3 个文件                37,106 字节
                                4 个目录    8,095,498,240 可用字节

    Process finished with exit code 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值