zoukankan      html  css  js  c++  java
  • Java在windows上操作系统文件与程序,执行系统命令等的技巧 .

    很多时候,我们只是需要在java程序中帮助用户打开一个文本文件,或者打开一个URL,或者是一份word文档,等等! 一种自然而直接的方法就是使用 Runtime.getRuntime().exec() .

    很多时候,我们只是需要在java程序中帮助用户打开一个文本文件,或者打开一个URL,或者是一份word文档,等等! 一种自然而直接的方法就是使用 Runtime.getRuntime().exec() .

    但是在实际使用中,总是会或多或少地出现很多问题,这里就简单总结一些常用的命令!

    先说明几点细节:

    一 exec()方法有很多重载版本,常用的方式是将所有命令以一个String对象传递给exec() ; 另一种方式是将cmd命令的各个部分包装成String [] ,然后将此数组传递给exec() !

    二 在windows上,文件名或者文件夹命中有空格时,可以采用将该名称放入双引号内的办法来避免出错!

    PS:windows中的程序很少会被使用cmd来启动,大家已经很习惯于双击了,所以常用程序不一定有统计的命名,这一点不同于linux上的vi等! 因此,请大家一定要熟悉windows  cmd下的一个特殊命令“start ”;另外,cmd在windows的很多版本里,其实就是 cmd.exe !

    1 调用记事本(或系统默认的文本程序)打开简单文本文件:

    Java代码
    1. Runtime.getRuntime().exec( "cmd.exe /c start filename.txt " );  
    1. Runtime.getRuntime().exec("cmd.exe /c start filename.txt ");  
    Runtime.getRuntime().exec("cmd.exe /c start filename.txt ");
    


    2 调用ms word打开文本文件:

    Java代码
    1. Runtime.getRuntime().exec( "cmd.exe /c start winword.exe filename.doc " );  
    1. Runtime.getRuntime().exec("cmd.exe /c start winword.exe filename.doc ");  
    Runtime.getRuntime().exec("cmd.exe /c start winword.exe filename.doc ");
    


    3 打开一个windows目录:

    Java代码
    1. Runtime.getRuntime().exec( "cmd.exe /c start  dirname " );  
    1. Runtime.getRuntime().exec("cmd.exe /c start  dirname ");  
    Runtime.getRuntime().exec("cmd.exe /c start  dirname ");
    


    4 打开一个url :

    Java代码
    1. Runtime.getRuntime().exec( "cmd.exe /c start  http://www.google.com " );  
    1. Runtime.getRuntime().exec("cmd.exe /c start  http://www.google.com ");  
    Runtime.getRuntime().exec("cmd.exe /c start  http://www.google.com ");
    


    5 打开默认的邮件程序并给xxx发送邮件;

    Java代码
    1. Runtime.getRuntime().exec( "cmd.exe /c start  mailto:xxx@xxx.com " );  
    1. Runtime.getRuntime().exec("cmd.exe /c start  mailto:xxx@xxx.com ");  
    Runtime.getRuntime().exec("cmd.exe /c start  mailto:xxx@xxx.com ");
    


    6 执行程序并捕获其标准输出:

    Java代码
    1. Process p = Runtime.getRuntime().exec( "start .//xxx.exe" );   
    2. p.waitfor();  
    1. Process p = Runtime.getRuntime().exec("start .//xxx.exe");  
    2. p.waitfor();  
    Process p = Runtime.getRuntime().exec("start .//xxx.exe");
    p.waitfor();
    


    注:此法亦可用来解决调用程序后其CMD黑色窗口不自动关闭的问题! 同时,如果被调用程序的执行需要消耗一段时间,则应该在exec()之后调用其返回的Process 对象的waitfor()方法来等待该程序的执行。例如:

    Java代码
    1. Process p = Runtime.getRuntime().exec( "start .//xxx.exe" );   
    2. p.waitfor();  
    1. Process p = Runtime.getRuntime().exec("start .//xxx.exe");  
    2. p.waitfor();  
    Process p = Runtime.getRuntime().exec("start .//xxx.exe");
    p.waitfor();
    


    再强调一点:

    start 后面的命令如果包含空格,请一定使用双引号,并且必须紧跟在 start 后多添加一个以双引号引起来的参数作为start的title ; 因为start命令会把其后的第一个使用双引号的参数作为新cmd窗口的title !!!

  • 相关阅读:
    XML 加密、解密
    word 转 pdf
    PowerDesigner(PowerDesigner15.1.0.2850)下载、安装以及破解
    SQL 2005 18456
    SQL 2005端口的修改
    SQL——统计查询
    由于启动用户实例的进程时出错,导致无法生成 SQL Server 的用户实例 解决办法
    ASP.NET MVC中Model View Controller的开发顺序
    使用Windows身份验证的Intranet网站安全管理 Windows Authentication
    ASP.NET web.config中数据库连接字符串connectionStrings节的配置
  • 原文地址:https://www.cnblogs.com/hy928302776/p/3034999.html
Copyright © 2011-2022 走看看