黑马程序员技术交流社区

标题: Runtime.getRuntime().exec("cmd /c dir")没有输出? [打印本页]

作者: 柳小龙    时间: 2013-8-5 09:07
标题: Runtime.getRuntime().exec("cmd /c dir")没有输出?
本帖最后由 柳小龙 于 2013-8-5 09:12 编辑

为何执行Runtime.getRuntime().exec("cmd /c dir")后没有输出?感觉很迷茫,力士们帮忙解决下?
作者: Kid1412    时间: 2013-8-5 16:51
看到/C以为了运行完直接关闭了,后来试了试/K,运行完不关闭,也不行,但是硬盘倒是狂读了一阵,不知道打印到哪去了。后来试了试打开新窗口就没有问题。
cmd /c start dir 用这个命令会弹出一个新窗口,但是运行完dir后也没关闭。
后来又试了试cmd /k start dir,结果好像差不多啊。

作者: 张洪慊    时间: 2013-8-5 23:03
参考:
http://www.cfanz.cn/index.php?c=article&a=read&id=33583
http://www.cnblogs.com/xxpal/articles/824963.html
为什么没反应,第一篇这样解释:
因为一些本机平台只提供有限的缓冲区大小为标准输入和输出流,未能及时写输入流或读取输出流的子流程可能会导致子流程阻止,甚至死锁。
说实话我也看不太懂
你可以尝试把结果读取到控制台上:
  1. Process p=Runtime.getRuntime().exec("cmd.exe /c dir h:\\");
  2.          BufferedReader bufr=new BufferedReader(new InputStreamReader(p.getInputStream()));
  3.        String line=null;
  4.        while((line=bufr.readLine())!=null)
  5.                System.out.println(line);
  6.        p.waitFor();
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2