java调用shell命令并获取执行结果的示例

下面是详细讲解“java调用shell命令并获取执行结果的示例”的完整攻略。

1. Java如何调用Shell命令

在Java中执行Shell命令,可以使用RuntimeProcessBuilder类。

1.1 使用Runtime类调用Shell命令

String command = "ls -l";
Runtime runtime = Runtime.getRuntime(); 
Process process = runtime.exec(command); // 执行Shell命令

使用Runtime类的exec方法执行Shell命令,返回一个Process对象。

1.2 使用ProcessBuilder类调用Shell命令

String command = "pwd";
ProcessBuilder processBuilder = new ProcessBuilder(command);
Process process = processBuilder.start(); // 执行Shell命令

使用ProcessBuilder类构建Shell命令,返回一个Process对象。

2. 获取Shell命令执行结果

获取Shell命令执行结果,需要从Process对象中获取输入流,再通过IO输出流的方式获取执行结果。

String result = "";
InputStream inputStream = process.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line = null;
while ((line = bufferedReader.readLine()) != null) {
    result += line + "\n"; // 将结果拼接为完整的字符串
}

通过getInputStream()方法获取Process对象的输入流,再通过BufferedReader类按行读取输入流中的内容。

注意:要将每行内容拼接在一起,得到完整的执行结果。

3. 完整示例程序

综合以上内容,下面给出两个Java调用Shell命令并获取执行结果的完整示例程序。

3.1 示例一

import java.io.*;

public class ShellDemo1 {

    public static void main(String[] args) {
        String command = "ls -l";
        Runtime runtime = Runtime.getRuntime();
        try {
            Process process = runtime.exec(command);
            String result = "";
            InputStream inputStream = process.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            String line = null;
            while ((line = bufferedReader.readLine()) != null) {
                result += line + "\n";
            }
            System.out.println("执行结果:\n" + result);
            process.waitFor(); // 阻塞等待Shell命令执行完毕
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

这个示例使用Runtime类执行Shell命令ls -l,获取命令执行结果并输出。

3.2 示例二

import java.io.*;

public class ShellDemo2 {

    public static void main(String[] args) {
        String command = "pwd";
        ProcessBuilder processBuilder = new ProcessBuilder(command);
        try {
            Process process = processBuilder.start();
            String result = "";
            InputStream inputStream = process.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            String line = null;
            while ((line = bufferedReader.readLine()) != null) {
                result += line + "\n";
            }
            System.out.println("执行结果:\n" + result);
            process.waitFor(); // 阻塞等待Shell命令执行完毕
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

这个示例使用ProcessBuilder类构建Shell命令pwd,获取命令执行结果并输出。

通过以上示例程序,我们了解了Java如何调用Shell命令并获取执行结果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java调用shell命令并获取执行结果的示例 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • Java中SSM+Shiro系统登录验证码的实现方法

    下面我会详细讲解Java中SSM+Shiro系统登录验证码的实现方法。 一、什么是验证码 验证码是一种人机识别技术,通常是在表单提交时对用户输入的内容进行验证。而验证码的实现方式有很多,比较常见的有“图片验证码”和“短信验证码”。 二、验证码的实现 1. 图片验证码 图片验证码是最常用的一种验证码,它是通过随机生成一张图片,使得用户必须输入正确的验证码才能提…

    Java 2023年5月23日
    00
  • Java反射简易教程

    下面是Java反射简易教程的完整攻略。 什么是反射? Java是一门静态语言,一般情况下,我们需要在编译时就定义好变量和类的类型。但是有些情况下,我们需要在运行时动态获取或者创建对象,这时候就需要使用反射技术。 Java反射是指程序可以访问、检测和修改它本身的某些属性或者方法,而这些属性或者方法都是在编译时完全未知的,只有在运行时才能确定。Java反射使得我…

    Java 2023年5月26日
    00
  • Java Spring的数据库开发详解

    Java Spring的数据库开发详解 本文主要介绍在Java Spring框架下进行数据库开发的过程,包括如何配置数据源、如何使用Java Spring的ORM框架访问数据库、如何进行数据库事务管理等方面的内容。 配置数据源 在Java Spring中,我们可以使用Spring JDBC框架来访问数据库。要使用Spring JDBC框架,我们需要先配置数据…

    Java 2023年5月19日
    00
  • Java实现按行分割大文件

    以下是Java实现按行分割大文件的完整攻略,包含步骤、代码示例和输出结果。 步骤一:准备工作 首先,需要导入Java中的IO包,以便读取和处理文件。 import java.io.*; 接着,需要定义一个方法来实现按行分割文件,命名为splitByLine。 public static void splitByLine(String fileName, in…

    Java 2023年5月20日
    00
  • Java 随机取字符串的工具类

    接下来我将为你讲解如何实现“Java 随机取字符串的工具类”,具体步骤如下: 1. 定义工具类 首先,在Java项目中,你需要定义一个名为StringRandomUtils的工具类,该类的作用是提供随机字符串相关的方法。 public class StringRandomUtils { } 2. 实现随机生成字符串的方法 在定义完工具类之后,你需要实现随机生…

    Java 2023年5月27日
    00
  • SpringMVC RESTFul实战案例删除功能实现

    SpringMVC RESTFul实战案例删除功能实现 在 SpringMVC 中,RESTful API 是一种常见的 Web 应用程序开发方式。在 RESTful API 中,HTTP 方法(GET、POST、PUT、DELETE 等)表示对资源的操作,URI 表示资源的位置。本文将详细讲解 SpringMVC RESTFul 实战案例删除功能实现,包括…

    Java 2023年5月18日
    00
  • jsp实现从服务器下载xls文件到客户端的方法

    实现从服务器下载xls文件到客户端通常可以通过以下步骤来完成: 服务器端准备Excel文件 首先需要在服务器端生成或获取Excel文件。一种常见的方式是使用Java POI库来动态生成Excel文件。例如,以下代码可以生成一个包含数据的Excel文件: // 创建工作簿 Workbook workbook = new XSSFWorkbook(); // 创…

    Java 2023年6月15日
    00
  • Sprint Boot @JsonFormat使用方法详解

    @JsonFormat是Spring Boot中的一个注解,用于指定Java对象在序列化为JSON字符串时的日期格式。在本文中,我们将详细介绍@JsonFormat注解的作用和使用方法,并提供两个示例。 @JsonFormat注解的作用 @JsonFormat注解用于指定Java对象在序列化为JSON字符串时的日期格式。当使用@JsonFormat注解标记一…

    Java 2023年5月5日
    00
合作推广
合作推广
分享本页
返回顶部