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日

相关文章

  • SpringCloud Gateway 路由配置定位原理分析

    Spring Cloud Gateway是Spring Cloud生态系统中的一个API网关,它提供了一种简单而有效的方式来路由请求、过滤请求和转换请求。在本文中,我们将详细讲解Spring Cloud Gateway的路由配置定位原理分析。 路由配置 在Spring Cloud Gateway中,我们可以使用路由配置来定义请求的路由规则。路由配置由一个或多…

    Java 2023年5月18日
    00
  • 详解java 三种调用机制(同步、回调、异步)

    详解java 三种调用机制(同步、回调、异步) 调用机制的概念 调用机制指的是在进行函数调用时,系统进行操作的方式。针对不同的操作方式,可以分为同步、回调、异步这三种机制。 同步调用机制 同步调用机制指的是在函数调用时,必须等待该函数返回结果之后才能继续执行下一步操作的调用方式。在同步调用过程中,如果该函数阻塞或运行时间较长,那么整个程序的性能就会变得比较低…

    Java 2023年5月26日
    00
  • 深入了解Java SpringBoot自动装配原理

    Java SpringBoot 自动装配原理是 SpringBoot 框架的一大特点,也是所谓依赖注入的核心。通过自动装配,SpringBoot 可以自动完成 Bean 的实例化,而不必通过 XML 或者 Java 配置来定义 Bean。本文将详细探讨 SpringBoot 自动装配的原理,包括步骤和示例。 SpringBoot 自动装配的步骤: 扫描组件 …

    Java 2023年5月19日
    00
  • 解决Spring boot 嵌入的tomcat不启动问题

    当我们在使用Spring Boot构建Web应用的时候,通常会内嵌Tomcat容器来运行我们的应用,但是有时候,我们会遇到Tomcat容器启动失败的问题。本文将给出解决Spring boot嵌入的Tomcat不启动问题的完整攻略。 问题分析 当我们在使用Spring Boot启动我们的Web应用时,会发现程序无法启动,控制台会打印很多错误信息,其中包含了如下…

    Java 2023年5月19日
    00
  • SpringBoot整合TKMyBatis实现单表增删改查操作

    下面将详细讲解“SpringBoot整合TKMyBatis实现单表增删改查操作”的完整攻略。 1. 导入依赖 首先,在项目的 pom.xml 文件中导入以下依赖: <!– SpringBoot Starter –> <dependency> <groupId>org.springframework.boot</g…

    Java 2023年6月15日
    00
  • 常见的Java编程风格有哪些?

    常见的Java编程风格包括: 1. 代码规范 编写规范的代码可以提高代码的可读性,使代码更易于理解和维护。常见的Java代码规范包括: 使用有意义的变量名和方法名,遵循驼峰命名法; 使用适当的缩进和空格,使代码结构更清晰; 使用注释解释代码的作用和逻辑等,使代码更易于理解; 使用代码格式化工具,保持代码的统一风格。 示例: // 反面示例 int i, j,…

    Java 2023年5月11日
    00
  • java基础的详细了解第八天

    Java基础的详细了解第八天攻略 一、多线程 1. 线程的创建(继承Thread类) Java中创建线程有两种方式,一种是继承Thread类,另一种是实现Runnable接口。第一种方式的具体代码如下: class MyThread extends Thread { @Override public void run() { // 线程要执行的代码 } } …

    Java 2023年5月30日
    00
  • SpringBoot server.port配置原理详解

    让我们来详细讲解一下“SpringBoot server.port配置原理详解”。 什么是server.port配置 在SpringBoot应用中,我们可以通过server.port属性来指定应用的端口号。这个属性可以在配置文件(如application.properties、application.yml等)或者命令行参数中指定。 配置文件中指定serve…

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