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会将目录作为类名一起解析故无法执行。

  • 相关阅读:
    简单的自我介绍
    学习总结(北航助教陈彦吉)
    2019春季第十二周助教总结
    2019春季第十一周助教总结
    第十一周作业
    2019春季第十周助教总结
    2019春季第九周助教总结
    第九周作业
    2019春季第八周助教总结
    第八周作业
  • 原文地址:https://www.cnblogs.com/leodaxin/p/8991628.html
Copyright © 2011-2022 走看看