21xrx.com
2025-04-06 16:23:39 Sunday
文章检索 我的文章 写文章
如何在Java中调用Linux终端命令并传参
2023-06-18 07:56:25 深夜i     5     0
Java Linux 终端命令 传参 Runtime ProcessBuilder

在Java项目开发中,我们有时候需要调用Linux系统命令来完成一些操作,比如执行脚本、备份文件等。本文将介绍如何在Java中调用Linux终端命令,并传递参数。

一、用Java执行Linux命令

首先,在Java中执行Linux命令时,我们需要使用Runtime类或ProcessBuilder类。这两个类都可以用于在Java中执行外部进程。

1. 使用Runtime

Runtime类是Java提供的一个执行环境,可以在其中执行系统命令。使用Runtime的exec()方法,在Java中执行Linux命令,示例代码如下:

public class ExecuteLinuxCommand {
  public static void main(String args[]) {
    try {
      // 创建Runtime对象
      Runtime runtime = Runtime.getRuntime();
      // 执行命令
      Process process = runtime.exec("ls -l");
      // 等待命令执行完成
      int exitValue = process.waitFor();
      // 打印命令输出结果
      BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK"));
      String line = null;
      while ((line = br.readLine()) != null) {
        System.out.println(line);
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

2. 使用ProcessBuilder

ProcessBuilder是Java SE 5引入的类,用于执行外部进程并控制进程的输入输出。使用ProcessBuilder的start()方法,在Java中执行Linux命令,示例代码如下:

public class ExecuteLinuxCommand2 {
  public static void main(String args[]) {
    try {
      // 创建ProcessBuilder对象
      ProcessBuilder pb = new ProcessBuilder("ls", "-l");
      // 启动进程
      Process process = pb.start();
      // 等待命令执行完成
      int exitValue = process.waitFor();
      // 打印命令输出结果
      BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK"));
      String line = null;
      while ((line = br.readLine()) != null) {
        System.out.println(line);
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

二、在Java中传递参数

在Java中传递参数,可以使用字符串拼接或者使用占位符等方式,将参数传递给Linux命令。下面以示例代码为例,演示如何在Java中传递参数。

public class ExecuteLinuxCommand3 {
  public static void main(String args[]) {
    try {
      // 获取需要传递的参数
      String fileName = "test.txt";
      String path = "/tmp";
      // 构造Linux命令
      String command = "cp " + path + "/" + fileName + " /home/";
      // 创建ProcessBuilder对象
      ProcessBuilder pb = new ProcessBuilder("/bin/sh", "-c", command);
      // 启动进程
      Process process = pb.start();
      // 等待命令执行完成
      int exitValue = process.waitFor();
      // 打印命令输出结果
      BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK"));
      String line = null;
      while ((line = br.readLine()) != null) {
        System.out.println(line);
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

以上就是在Java中调用Linux终端命令并传参的全部内容。

  
  

评论区

请求出错了