java调用DOS,输出的结果被截断

yakai 2013-02-23 03:43:15
java调用一个DOS命令,和在DOS下输入的内容相比,少了后面一段,请大家分析,给出建议,看代码错在什么地方。在命令行里面输入cmd /c ipconfig/all,中文开始的一段内容被java环境丢掉了。

package javaapplication5;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

/**
*
* @author
*/
public class JavaApplication5 {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
String sCmd = "C:\\windows\\system32\\cmd.exe /c ipconfig/all";
try {
Process pro = Runtime.getRuntime().exec(sCmd);
InputStream is = pro.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
// 读取第一行
String message = br.readLine();

while(message !=null){
System.out.println(message);
message = br.readLine();
}
} catch (IOException e) {
// System.out.println("Can't get mac address!");
}
}
}
...全文
362 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
yakai 2014-05-27
  • 打赏
  • 举报
回复
代码没有问题,netbeans和eclipse用最新的,结果和dos中的相同,在win7中已经不会被截断了,看样子是java环境的问题。
yakai 2013-03-02
  • 打赏
  • 举报
回复
帖子快沉了,顶起。
yakai 2013-02-26
  • 打赏
  • 举报
回复
早试过GBK,不行的。
十年彩虹 2013-02-26
  • 打赏
  • 举报
回复
没有问题。不过。编码要改成GBK ,UTF-8是乱码
yakai 2013-02-26
  • 打赏
  • 举报
回复
eclipse和DOS,netbeans环境中结果相同。
dracularking 2013-02-25
  • 打赏
  • 举报
回复
哦,你是通过jar包运行的,在eclipse里直接运行程序呢?
dracularking 2013-02-25
  • 打赏
  • 举报
回复
引用 14 楼 yakai 的回复:
都试过了,还是不行,看样子像是buffer不够大,或者是流先关闭了,但不知道为什么。
我试了下,也没问题,也是包含汉字的,如果改默认编码为指定编码的话,顶多是原汉字处出现了乱码,但没有截断现象出现。但我觉得和buffer关系应该不大,这点字符容量,根本不值一提。
yakai 2013-02-25
  • 打赏
  • 举报
回复
都试过了,还是不行,看样子像是buffer不够大,或者是流先关闭了,但不知道为什么。
zxj828282 2013-02-25
  • 打赏
  • 举报
回复
top toop top
yakai 2013-02-25
  • 打赏
  • 举报
回复
没用的,试过了,和没加结果完全一样。
Mourinho 2013-02-25
  • 打赏
  • 举报
回复
应该是字符编码的问题 new InputStreamReader(is,"UTF-8") 看看GBK,GB2312可以吗? 在win8中文版下用new InputStreamReader(is,"UTF-8")会显示乱码。
bluemoby 2013-02-24
  • 打赏
  • 举报
回复
new InputStreamReader(is,"UTF-8")这里加上字符集试试看
yakai 2013-02-24
  • 打赏
  • 举报
回复
to #6: cmd 在DOS下可以输出,在Java中应该也能输出那么多内容才对。
nmyangym 2013-02-24
  • 打赏
  • 举报
回复
似乎和汉字有关,一到有汉字的地方,就结束了。
yakai 2013-02-24
  • 打赏
  • 举报
回复
我用的是WINDOWS XP英文系统,有这个问题。WIN7中文系统倒没发现这个问题,物理地址能读出来的。
oZouBianBian 2013-02-24
  • 打赏
  • 举报
回复
你要输出的内容太多了, cmd容不下,就丢弃了前面的了,你可以设置一下你的cmd内容显示长度,不是那个方框的高度哦
yakai 2013-02-24
  • 打赏
  • 举报
回复

这个是DOS命令行输出,java执行的结果像是碰到输出中文就停止了,或者是缓冲区不够大自动关闭流了?
yakai 2013-02-24
  • 打赏
  • 举报
回复
maxcai 2013-02-23
  • 打赏
  • 举报
回复
楼主把你的输出贴出来看,可以的话上张图
失落夏天 2013-02-23
  • 打赏
  • 举报
回复
不是很明白你问的是什么,代码本身没错。我测试了一下。结果正常啊,


Windows IP 配置

   主机名  . . . . . . . . . . . . . : liu-PC
   主 DNS 后缀 . . . . . . . . . . . : 
   节点类型  . . . . . . . . . . . . : 混合
   IP 路由已启用 . . . . . . . . . . : 否
   WINS 代理已启用 . . . . . . . . . : 否

无线局域网适配器 无线网络连接 2:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . : 
   描述. . . . . . . . . . . . . . . : Microsoft Virtual WiFi Miniport Adapter
   物理地址. . . . . . . . . . . . . :
   DHCP 已启用 . . . . . . . . . . . : 是
   自动配置已启用. . . . . . . . . . : 是

以太网适配器 本地连接:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . : 
   描述. . . . . . . . . . . . . . . : Qualcomm Atheros AR8151 PCI-E Gigabit Ethernet Controller (NDIS 6.20)
   物理地址. . . . . . . . . . . . . : 10-BF-48-65-28-0B
   DHCP 已启用 . . . . . . . . . . . : 是
   自动配置已启用. . . . . . . . . . : 是

无线局域网适配器 无线网络连接:

   连接特定的 DNS 后缀 . . . . . . . : 
   描述. . . . . . . . . . . . . . . : Atheros AR9485 Wireless Network Adapter
   物理地址. . . . . . . . . . . . . : 
   DHCP 已启用 . . . . . . . . . . . : 是
   自动配置已启用. . . . . . . . . . : 是
   本地链接 IPv6 地址. . . . . . . . : fe80::a901:a5ba:5a2c:fe3d%11(首选) 
   IPv4 地址 . . . . . . . . . . . . : 192.168.2.100(首选) 
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   获得租约的时间  . . . . . . . . . : 2013年2月23日 19:38:25
   租约过期的时间  . . . . . . . . . : 2013年2月23日 21:38:28
   默认网关. . . . . . . . . . . . . : 192.168.2.1
   DHCP 服务器 . . . . . . . . . . . : 192.168.2.1
   DHCPv6 IAID . . . . . . . . . . . : 239365463
   DHCPv6 客户端 DUID  . . . . . . . : 00-01-00-01-17-AD-7B-E9-44-6D-57-78-C3-7E
   DNS 服务器  . . . . . . . . . . . : 192.168.1.1
                                       192.168.2.1
   TCPIP 上的 NetBIOS  . . . . . . . : 已启用

隧道适配器 6TO4 Adapter:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . : 
   描述. . . . . . . . . . . . . . . : Microsoft 6to4 Adapter
   物理地址. . . . . . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP 已启用 . . . . . . . . . . . : 否
   自动配置已启用. . . . . . . . . . : 是

隧道适配器 本地连接* 162:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . : 
   描述. . . . . . . . . . . . . . . : Microsoft 6to4 Adapter #148
   物理地址. . . . . . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP 已启用 . . . . . . . . . . . : 否
   自动配置已启用. . . . . . . . . . : 是

隧道适配器 Reusable Microsoft 6To4 Adapter:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . : 
   描述. . . . . . . . . . . . . . . : Microsoft 6to4 Adapter #2
   物理地址. . . . . . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP 已启用 . . . . . . . . . . . : 否
   自动配置已启用. . . . . . . . . . : 是
加载更多回复(1)

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧