java 调用cmd执行时用Process的WaitFor方法阻塞问题解决

需要把缓冲区的流读完
一个是InputStream还有一个是ErrorStream

process = runtime.exec(cmd);
                is1= process.getInputStream();
                is2= process.getErrorStream();
                new Thread(){
    
    
                    @Override
                    public void run() {
    
    
                        BufferedReader bi=null;
                        String line;
                        try {
    
    
                            bi=new BufferedReader(new InputStreamReader(is1));;
                            while ((line= bi.readLine())!=null){
    
    
//                                System.out.println(line);
                            }
                        }catch (IOException e){
    
    
                            e.printStackTrace();
                        }finally {
    
    
                            if (bi!=null){
    
    
                                try {
    
    
                                    bi.close();
                                } catch (IOException e) {
    
    
                                    e.printStackTrace();
                                }
                            }
                        }
                    }
                }.start();
                new Thread(){
    
    
                    @Override
                    public void run() {
    
    
                        BufferedReader bi=null;
                        String line;
                        try {
    
    
                            bi=new BufferedReader(new InputStreamReader(is2));;
                            while ((line= bi.readLine())!=null){
    
    
//                                System.out.println(line);
                            }
                        }catch (IOException e){
    
    
                            e.printStackTrace();
                        }finally {
    
    
                            if (bi!=null){
    
    
                                try {
    
    
                                    bi.close();
                                } catch (IOException e) {
    
    
                                    e.printStackTrace();
                                }
                            }
                        }
                    }
                }.start();
                process.waitFor();

猜你喜欢

转载自blog.csdn.net/wflsyf/article/details/117745271