Runtime.getRuntime().exec(参数1,参数2,参数3)。这个方法可以调用其他进程程序,这几个参数到底是怎样设置的?我想用CMD打开某个盘上的图片,自己这样设置 String[] cmd = {"cmd","d:","001.png"};
Runtime.getRuntime().exec(cmd,null,null);想用CMD打开D盘上的001.png。运行后程序没出错,但图片也没有被打开,程序没生效,高手麻烦说下这些参数是如何设置的,我这个操作要怎样输入参数才有效?麻烦再给你个例子,谢谢!!

解决方案 »

  1.   

    给你个例子,自己慢慢看。
    package com.sxzl.test;public class TestRuntime {        public static void main(String args[]) { 
            try {         //String myArgs[] ={"http://www.csdn.com/"};
            Process process = Runtime.getRuntime().exec( 
            //"cmd.exe /c start http://www.csdn.com/"
            "C:\\Program Files\\Internet Explorer\\iexplore.exe"    
            +" http://www.csdn.com/"
            ); 
                    } catch (Exception e) { 
            e.printStackTrace(); 
            } 
            } 
            
    }
      

  2.   

    更好的选择:
    java.awt.Desktop.getDesktop().open(new File("D:\\image.png"));
      

  3.   


    Runtime.getRuntime().exec("mspaint d:/001.png"); 这样就行了
      

  4.   

    2L的可以打开,但我还是想知道怎样用Runtime操作cmd,实现其他dos指令,弄不懂Runtime的参数是怎样设置的。
    3L的用了还是出错
      

  5.   

    3L的发现要重新指定文件位置才行
    Runtime.getRuntime().exec("mspaint d:/001.png",null,new File("d:/"))
    用的是画板打开,不是图片默认的图片查看器。
      

  6.   


    public static void openFile(String filepath) {
        try {
          Runtime runtime = Runtime.getRuntime();
          runtime.exec("rundll32 url.dll,FileProtocolHandler " + filepath);
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
      

  7.   

    String[] args = {"cmd","/c","start","D:\\abc.png"};
    Runtime.getRuntime().exec(args);
    Process p = new ProcessBuilder("cmd","/c","start","D:\\abc.png").start();
    这样可以不?
      

  8.   

    public Process exec(String[] cmdarray,
                        String[] envp,
                        File dir)
                 throws IOException在指定环境和工作目录的独立进程中执行指定的命令和变量。 
    给定的字符串数组 cmdarray 表示一个命令行标记,字符串数组 envp 则表示“环境”变量设置,此方法会创建一个新进程,而指定的命令就在这个进程中执行。 此方法检查 cmdarray 是否是一条有效的操作系统命令。哪些命令有效取决于系统,但是该命令至少必须有一个非 null 字符串的非空列表。 如果 envp 为 null,那么子进程会继承当前进程的环境设置。 ProcessBuilder.start() 现在是启用一个具有已修改环境的进程的首选方法。 dir 指定了新子进程的工作目录。如果 dir 为 null,那么子进程会继承当前进程的当前工作目录。 如果安全管理器存在,则用数组 cmdarray 的第一个元素作为变量来调用安全管理器的 checkExec 方法。这可能导致抛出 SecurityException。 启动操作系统进程的方式完全取决于系统。其中有很多方面会导致错误: 未找到操作系统程序文件。 
    对程序文件的访问被拒绝。 
    工作目录不存在。 
    这些情况都会抛出一个异常。该异常的具体特性取决于系统,但它总是 IOException 的一个子类。 
    参数:
    cmdarray - 包含所调用命令及其参数的数组。
    envp - 字符串数组,其中每个元素的环境变量的设置格式为 name=value,如果子进程应该继承当前进程的环境,或该参数为 null。
    dir - 子进程的工作目录;如果子进程应该继承当前进程的工作目录,则该参数为 null。 
    返回:
    一个新的 Process 对象,用于管理子进程 
    抛出: 
    SecurityException - 如果安全管理器存在,并且其 checkExec 方法不允许创建子进程 
    IOException - 如果发生 I/O 错误 
    NullPointerException - 如果 cmdarray 为 null,或者 cmdarray 的某个元素为 null,抑或 envp 的某个元素为 null 
    IndexOutOfBoundsException - 如果 cmdarray 是一个空数组(长度为 0)