Java调用Windows命令

原创 2008年08月26日 20:46:00
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

相关文章推荐

java调用windows命令

  • 2009年08月29日 10:31
  • 23KB
  • 下载

Java调用Windows内cmd命令

很多情况下,在Windows进行操作时,直接使用cmd命令提示符会远比通过Java实现简便的多,所以我们可以通过使用Java调用cmd命令的方式来完成这一操作。可以使用Java调用cmd命令删除目录下...
  • Roy_70
  • Roy_70
  • 2016年05月26日 10:57
  • 5787

java调用windows命令,并且获取打印的值。

最近做的项目中,需要在java中调用linux命令,并且获取此命令打印的值。找了一些文档,在本机xp系统上测试了一下。 测试代码: import java.io.BufferedInputSt...

JAVA如何调用WINDOWS命令行

JAVA如何调用WINDOWS命令行 2008-04-01 23:40 用Java编写应用时,有时需要在程序中调用另一个现成的可执行程序或系统命令,这时可以通过组合使用Ja...

使用Java调用Windows批处理命令来实现ICE服务端看门狗(守护进程)

最近默默地进入了两三个项目组,其中一个是关于ICE服务的项目。关于ICE分布式架构网上有很多资料,这里就不详述了。好不容易搞完ICE的几个接口,由于做项目产品化的缺人,只好由我来继续搞ICE服务端的产...
  • zjutzmh
  • zjutzmh
  • 2016年11月13日 18:13
  • 573

Java调用Windows命令

Java调用Windows命令   Java调用Windows命令主要用到两个类:   java.lang.Runtime 每个 Java 应用程序都有一个 Runtime 类实例,使应用程...

windows 下 java程序jsch连接远程linux服务器执行shell命令

java远程连接服务的shell需要使用SSH的登录方式,可以使用JSch技术。JSch 是SSH2的一个纯Java实现。它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等。 ...

java中\r与\n的区别 (主要是在windows中DOS命令下)

\r : return 到当前行的最左边。 \n: newline 向下移动一行,并不移动左右。 历史: 回车”(Carriage Return)和“换行”(Line Feed)这两个概念的来历和区...

java运行Windows命令

转载地址:http://walsh.iteye.com/blog/449051 如何用Java来调用Windows上的wmic命令来获取系统中当前的进程信息。我的第一印象是用Runtime.exec...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java调用Windows命令
举报原因:
原因补充:

(最多只允许输入30个字)