问题可以参看姚伟涛的题目。我的有了新的问题,求帮忙!
题目:在一个进程里面启动cmd 然后输入ipconfig 和netstat之类的命令 并把输出打印到一个txt里面
我的回答是(我粘过来了,或者去他那里帮我看看):
嗯 楼上2位很对啊,但是我觉得开个线程比较好吧。所以我自己做了一个例子。也实现了将ipconfig命令的结果输入到记事本里面。
但是很让人崩溃的是,我的验证语句中BufferedReader读出来的竟然是null,让我很郁闷,调试了n久,打印的readLine字符串总是null。
说是while循环执行条件根本不成立,也就是readLine读出来的是null,郁闷啊。。。。。
大家给我看看,怎么一回事........
上图上代码:- package com.heima;
-
- import java.io.BufferedReader;
-
- import java.io.IOException;
-
- import java.io.InputStream;
-
- import java.io.InputStreamReader;
-
- public class UseCmdTest2 {
-
- public static void main(String[] args) throws IOException, InterruptedException {
-
- //我输出到f盘hell.txt,等会截图你们看看。。但是后面readLine读出来的为什么为null啊,,,,,,,求指教。
-
- String[] cmd = {"cmd.exe", "/c","ipconfig -all",">F:\\hello.txt"};
-
- Process p = Runtime.getRuntime().exec(cmd);
-
- System.out.println(p.getInputStream().toString());
-
-
- //在网上查到大家都是这么用的。。
-
- new Thread(new InputStreamDetection(p.getInputStream())).start();
-
- new Thread(new InputStreamDetection(p.getErrorStream())).start();
-
- p.getOutputStream().close();
-
- int exitValue = p.waitFor();
-
- //返回o说明成功了。返回1说明失败!
-
- System.out.println("return:"+exitValue);
-
- }
-
- }
-
- class InputStreamDetection implements Runnable {
-
- private InputStream is;
-
-
- public InputStreamDetection(InputStream ins) {
-
- this.is = ins;
-
- }
-
- @Override
-
- public void run() {
-
- BufferedReader br = new BufferedReader(new InputStreamReader(is));
-
- //StringBuffer sb = new StringBuffer();
-
- String inputLine = null;
-
- try {
-
- System.out.println("br.readLine():"+br.readLine());
-
- while(null != (inputLine = br.readLine())) {
-
- //sb.append(inputLine).append("\n");
-
- System.out.println("inputLine:"+inputLine);
-
- }
-
- } catch (IOException e) {
-
- e.printStackTrace();
-
- }
-
- }
-
- }
复制代码 myeclipse输出结果:
但是记事本里已经有结果了,图为:
|
|