【Java基础】Java与Windows系统的交互

作者:郭嘉
邮箱:[email protected]
博客:http://blog.csdn.net/allenwells
github:https://github.com/AllenWell

一 Java执行CMD命令

原理

Process process = Runtime.getRuntime().exec("cmd order");
  • cmd /c cmdorder 是执行完cmdorder命令后关闭命令窗口。
  • cmd /k cmdorder 是执行完cmdorder命令后不关闭命令窗口。
  • cmd /c start cmdorder 会打开一个新窗口后执行cmdorder指令,原窗口会关闭。
  • cmd /k start cmdorder 会打开一个新窗口后执行cmdorder指令,原窗口不会关闭。

注意

如果exec()中只有CMD命令,则命令会直接被执行,而不会打开命令行窗口;

举例

下面例子实现了执行解压JAR包,并把命令行信息输到Java的图形界面的功能:

Process process = null;
try
{
    process = Runtime.getRuntime().exec("jar xvf " + jarInputFile.getPath()) ;
}
catch (IOException e)
{
    e.printStackTrace();
}

InputStream inputStream = process.getInputStream();
Reader reader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(reader);
try
{
    for(String s = ""; ( s = bufferedReader.readLine()) != null;)
    {
        consoleInfo.append(s + "<br>");
    }
        bufferedReader.close();
        reader.close();
        JLabel consoleLabel = new JLabel();
        consoleLabel.setText("<html>" + consoleInfo.toString() + "</html>");
    }
}
catch (/ e)
{
    e.printStackTrace();
}

注意:Java Swing的文字显示不支持直接“\n”换行,所以使用“”标签的形式来实现换行。

二 CMD输出信息重定向

以上程序展示的是把执行一条命令后,把命令行上的信息输出到Java的图形界面上,那么如何实现实时的检测Windows的命令行打印信息并进行输出呢?

实现方法

Java的System类中有个out成员变量,称为标准输出流,用来把打印输出到屏幕上。上面所述的问题其实就是System.out的输出重定向问题。

System.out在Java中源码实现如下所示:

    /**
     * Default input stream.
     */
    public static final InputStream in;

    /**
     * Default output stream.
     */
    public static final PrintStream out;

    /**
     * Default error output stream.
     */
    public static final PrintStream err;

    private static final S
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值