java执行Linux命令的方法

作者:shichen2014 时间:2023-01-23 21:36:10 

本文实例讲述了java执行Linux命令的方法。分享给大家供大家参考。具体实现方法如下:


public class StreamGobbler extends Thread { 
     
    InputStream is; 
    String type; 
 
    public StreamGobbler(InputStream is, String type) { 
        this.is = is; 
        this.type = type; 
    } 
 
    public void run() { 
        try { 
            InputStreamReader isr = new InputStreamReader(is); 
            BufferedReader br = new BufferedReader(isr); 
            String line = null; 
            while ((line = br.readLine()) != null) { 
                if (type.equals("Error")) { 
                    System.out.println("Error   :" + line); 
                } else { 
                    System.out.println("Debug:" + line); 
                } 
            } 
        } catch (IOException ioe) { 
            ioe.printStackTrace(); 
        } 
    } 

private void shell(String cmd)
{
        String[] cmds = { "/bin/sh", "-c", cmd };
        Process process;

        try
        {
            process = Runtime.getRuntime().exec(cmds);

            StreamGobbler errorGobbler = new StreamGobbler(process.getErrorStream(), "Error");
            StreamGobbler outputGobbler = new StreamGobbler(process.getInputStream(), "Output");
            errorGobbler.start();
            outputGobbler.start();
            try
            {
                process.waitFor();
            }
            catch (InterruptedException e)
            {
                e.printStackTrace();
            }
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
}

其中参数 cmd 为Linux命令。每次只能执行一条命令。

1.Java Runtime.exec()注意事项:

① 永远要在调用waitFor()方法之前读取数据流
② 永远要先从标准错误流中读取,然后再读取标准输出流

2.最好的执行系统命令的方法就是写个bat文件或是shell脚本。

希望本文所述对大家的Java程序设计有所帮助。

标签:java,Linux,命令
0
投稿

猜你喜欢

  • Android开发之ListView的head消失页面导航栏的渐变出现和隐藏

    2022-03-02 14:25:24
  • C#操作注册表的方法

    2023-06-24 14:34:46
  • Spring Boot + thymeleaf 实现文件上传下载功能

    2022-05-22 03:56:13
  • java生成随机数的方法

    2023-12-12 12:49:51
  • 44条Java代码优化建议

    2023-12-22 06:03:49
  • C++类常量和类枚举

    2022-05-05 17:07:47
  • Spring Boot中lombok的安装与使用详解

    2021-08-26 14:50:38
  • C# ManualResetEvent用法详解

    2021-06-11 09:37:14
  • java使用回溯法求解数独示例

    2023-08-17 14:39:10
  • Java使用Socket通信传输文件的方法示例

    2023-04-16 21:52:31
  • C#制作鹰眼的详细全过程(带注释)实例代码

    2022-03-01 06:56:12
  • C# FileStream实现大文件复制

    2021-06-14 11:00:53
  • spring Bean的初始化过程解析

    2022-10-13 18:10:01
  • Java Socket使用加密协议进行传输对象的方法

    2023-11-28 12:47:44
  • Unity3D动态对象优化代码分享

    2023-12-22 09:38:24
  • Java框架设计灵魂之反射的示例详解

    2023-06-13 21:34:34
  • Spring Cloud Alibaba Nacos Config进阶使用

    2021-07-14 19:46:00
  • C#中的值传递和引用传递详细解析

    2022-03-20 20:11:02
  • android实现点击按钮控制图片切换

    2022-10-16 02:38:55
  • C#之CLR内存字符串常量池(string)

    2023-04-23 00:09:12
  • asp之家 软件编程 m.aspxhome.com