Java.lang.Runtime.exec() 方法

描述

java.lang.Runtime.exec(String[] cmdarray, String[] envp, File dir) 方法在具有指定环境和工作目录的单独进程中执行指定的命令和参数。 给定一个字符串数组 cmdarray,代表命令行的标记,和一个字符串数组 envp,代表"环境"变量设置,这个方法创建一个新进程来执行指定的命令。

启动操作系统进程高度依赖于系统。 在许多可能出错的事情中,有 −

  • 找不到操作系统程序文件。
  • 访问程序文件被拒绝。
  • 工作目录不存在。

在这种情况下会抛出异常。 异常的确切性质取决于系统,但它始终是 IOException 的子类。


声明

以下是 java.lang.Runtime.exec() 方法的声明。

public Process exec(String[] cmdarray, String[] envp, File dir)

参数

  • cmdarray − 包含要调用的命令及其参数的数组。

  • envp − 字符串数组,每个元素的环境变量设置格式为 name = value,如果子进程应该继承当前进程的环境,则为 null。

  • dir − 子进程的工作目录,如果子进程应该继承当前进程的工作目录,则返回 null。


返回值

该方法返回一个新的Process对象,用于管理子进程


异常

  • SecurityException − 如果存在安全管理器并且其 checkExec 方法不允许创建子进程

  • IOException − 如果发生 I/O 错误

  • NullPointerException − 如果命令为空

  • IndexOutOfBoundsException − 如果 cmdarray 是一个空数组(长度为 0)


示例

此示例需要我们的 C:/ 文件夹中名为 test.txt 的文件,其内容如下 −

Hello

下面的例子展示了 lang.Runtime.exec() 方法的使用。

package com.tutorialspoint;

import java.io.File;

public class RuntimeDemo {

   public static void main(String[] args) {
      try {

      // create a new array of 2 strings
      String[] cmdArray = new String[2];

      // first argument is the program we want to open
      cmdArray[0] = "notepad.exe";

      // second argument is a txt file we want to open with notepad
      cmdArray[1] = "test.txt";

      // print a message
      System.out.println("Executing notepad.exe and opening test.txt");

      // create a file which contains the directory of the file needed
      File dir = new File("c:/");

      // create a process and execute cmdArray and currect environment
      Process process = Runtime.getRuntime().exec(cmdArray, null, dir);

      // print another message
      System.out.println("test.txt should now open.");

      } catch (Exception ex) {
         ex.printStackTrace();
      }
   }
}

让我们编译并运行上面的程序,这将产生下面的结果 −

Executing notepad.exe and opening test.txt
test.txt should now open.