zoukankan      html  css  js  c++  java
  • Process和ProcessBuilder入门【原】

    ProcessBuilder优点

    ProcessBuilder(XXX).start()和Runtime.exec(XXX)功能相同,主要优点在使用过程中感受有:

    • 前者是jdk1.5后的新方式
    • 配置环境变量时更优雅
    • 对当前目录的控制也更合理
    • 错误流重定向特别方便 
    • 进程控制更简洁

    ProcessTool.java

    package test;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Map;
    
    /**
     * 
     * @author King
     * @see
     * @version createTM:2017年11月23日 下午3:41:38
     */
    public class ProcessTool {
    
        public static void main(String[] args) throws IOException {
            execWindowCmd();
        }
    
        public static void execWindowCmd() throws IOException {
    
            ProcessBuilder pb = new ProcessBuilder();// 命令
            Map<String, String> env = pb.environment();// 独立环境变量
            System.out.println(env);// 打印环境变量
            env.put("MY_NAME", "KING");// 添加环境变量key-value
            pb.redirectErrorStream(true);// 重定向错误输出流到正常输出流
    
            try {
                pb.directory(new File("d://test1"));// 设置目录test1
                pb.command("cmd", "/c", "dir");// 执行命令
                Process process1;
                process1 = pb.start();// 启动进程
                BufferedReader br1;
                br1 = new BufferedReader(new InputStreamReader(process1.getInputStream(), "gbk"));
                String line1 = null;
                while ((line1 = br1.readLine()) != null) {
                    System.out.println(line1);
                }
    
                pb.directory(new File("d://test2"));// 设置目录test2
                pb.command("cmd", "/c", "dir", ">>", "test1.log");// 执行命令,把结果输出到test1.log
                Process process2 = pb.start();// 启动进程
                BufferedReader br2 = new BufferedReader(new InputStreamReader(process2.getInputStream(), "gbk"));
                String line2 = null;
                while ((line2 = br2.readLine()) != null) {//因为结果输出到了文件,所以本处无信息返回
                    System.out.println(line2);
                }
            } catch (IOException e) {
                e.printStackTrace();
                throw e;
            }
        }
    }

    Java Runtime.exec()的使用

    深入研究java.lang.ProcessBuilder类

  • 相关阅读:
    hive基本操作与应用
    用mapreduce 处理气象数据集
    熟悉常用的HBase操作,编写MapReduce作业
    爬虫大作业
    第三章 熟悉常用的HDFS操作
    数据结构化与保存
    获取全部校园新闻
    爬取校园新闻首页的新闻的详情,使用正则表达式,函数抽离
    网络爬虫基础练习
    Hadoop综合大作业
  • 原文地址:https://www.cnblogs.com/whatlonelytear/p/7885270.html
Copyright © 2011-2022 走看看