师毅的Blog

【https://blog.shiyicode.com】听说太理想的一切都不可接触,我却哪管千山走遍,亦要设法去捕捉......

java程序操作命令行

使用

在写java项目时, 有些特殊情况下需要用到操作命令行, 以前用过好几次, 都是用的时候从网上找, 用完又忘记, 用一次找一次, 所以这次干脆将其保存在这里.

/**
 * Created by shiyi on 16/8/30.
 */
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Command {
    public static void exeCmd(String commandStr) {
        BufferedReader br = null;
        try {
            Process p = Runtime.getRuntime().exec(commandStr);
            br = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line = null;
            StringBuilder sb = new StringBuilder();
            while ((line = br.readLine()) != null) {
                sb.append(line + "\n");
            }
            System.out.println(sb.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
        finally
        {
            if (br != null)
            {
                try {
                    br.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public static void main(String[] args) {
        String commandStr = "ping www.taobao.com";
        Command.exeCmd(commandStr);
    }
}

命令行执行主要是对Runtime.getRuntime().exec()这个函数进行调用, 上述代码对其进行了封装, 作为一个类, 在执行完命令后同时会将终端返回结果给输出出来.

特殊点

今天使用命令行的目的是在java程序里对数据库进行备份, 也就是对mysqldump进行使用, 但是程序运行后, 并没有预期的执行结果. 查了资料后知道java操作命令不能支持管道操作, 而mysqldump的使用中恰恰用到了管道.
这种方法的解决方案很简单, 就是先将要操作的命令存为脚本,
linux- x.sh window- x.bat 再在exec里开始执行脚本的命令,
linux- sh x.sh window- x.bat
就可以绕过管道的问题.

阅读更多
版权声明:本文为博主原创文章,转载请附上链接http://blog.csdn.net/to_be_better https://blog.csdn.net/to_be_better/article/details/52385739
文章标签: java
个人分类: Java
上一篇步步为营-墙棋AI人机对战(Android)
下一篇Mysql查询重复数据并按条件删除重复行
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭