21xrx.com
2024-11-22 07:32:17 Friday
登录
文章检索 我的文章 写文章
如何在Java中调用Linux终端命令并传参
2023-06-18 07:56:25 深夜i     --     --
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终端命令并传参的全部内容。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复