zoukankan      html  css  js  c++  java
  • Java执行CMD命令

    参见:https://blog.csdn.net/lixingshi/article/details/50467840

     public static void runtimeCommand() throws Exception {
        	
        	Process process = Runtime.getRuntime().exec("cmd.exe /c dir");
        	int status = process.waitFor();
        	
        	System.out.println(status);
        	InputStream in = process.getInputStream();
        	
        	BufferedReader br = new BufferedReader(new InputStreamReader(in));
        	String line = br.readLine();
        	while(line!=null) {
        		System.out.println(line);
        		line = br.readLine();
        	}
        	
        }  

    命令行中使用/c关闭执行完毕的窗口,否则无法获取输入流。但是在Linux下面就可以直接使用如下代码获取输入流:

    Process process = Runtime.getRuntime().exec("ls");
        	int status = process.waitFor();
        	
        	System.out.println(status);
        	InputStream in = process.getInputStream();
        	
        	BufferedReader br = new BufferedReader(new InputStreamReader(in));
        	String line = br.readLine();
        	while(line!=null) {
        		System.out.println(line);
        		line = br.readLine();
        	}
    

      还可以使用ProcessBuilder进行创建进程,这种方更灵活。代码如下:

    public static void processBuilderCommand() throws Exception {
    	 
        	List<String> commands = new ArrayList<>();
        	commands.add("cmd.exe");
        	commands.add("/c");
        	commands.add("dir");
        	commands.add("E:\flink");
    	 	ProcessBuilder pb =new ProcessBuilder(commands);
    	 	//可以修改进程环境变量
    	 	pb.environment().put("DAXIN_HOME", "/home/daxin");
    	 	System.out.println(pb.directory());
    	 	
        	Process process = pb.start();
        	int status = process.waitFor();
        	System.out.println(pb.environment());
        	
        	System.out.println(status);
        	InputStream in = process.getInputStream();
        	
        	BufferedReader br = new BufferedReader(new InputStreamReader(in));
        	String line = br.readLine();
        	while(line!=null) {
        		System.out.println(line);
        		line = br.readLine();
        	}
        	
        }
        
    

      

    调用java命令执行class文件并获取输出:

     public static void processBuilderCommand() throws Exception {
    	 
        	List<String> commands = new ArrayList<>();
        	commands.add("cmd.exe");
        	commands.add("/c");
        	commands.add("java HelloWorld");
    	 	ProcessBuilder pb =new ProcessBuilder(commands);
    	 	pb.directory(new File("C:\Users\liuguangxin\oxygen--workspace\java8\bin\"));//设置工作目录
        	Process process = pb.start();
        	int status = process.waitFor();
        	
        	InputStream in = process.getInputStream();
        	
        	BufferedReader br = new BufferedReader(new InputStreamReader(in));
        	String line = br.readLine();
        	while(line!=null) {
        		System.out.println(line);
        		line = br.readLine();
        	}
        	
        }
    

      

    java   C:\Users\liuguangxin\oxygen--workspace\java8\bin\HelloWorld会将目录作为类名一起解析故无法执行。

  • 相关阅读:
    WebApi之DOM的基本介绍
    Javascript常见数据类型API
    JavaScript作用域与对象
    Javascript数组与函数初识
    久等了,你要的 Python 书籍推荐,来了
    六种酷炫Python运行进度条
    python获取系统内存占用信息的实例方法
    在图像中隐藏数据:用 Python 来实现图像隐写术
    付费?是不可能的!20行Python代码实现一款永久免费PDF编辑工具
    Python数据分析实战:使用pyecharts进行数据可视化
  • 原文地址:https://www.cnblogs.com/leodaxin/p/8991628.html
Copyright © 2011-2022 走看看