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!");
}
}
}
...全文
276 点赞 收藏 21
写回复
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环境中结果相同。
回复 点赞
哦,你是通过jar包运行的,在eclipse里直接运行程序呢?
回复 点赞
引用 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 已启用 . . . . . . . . . . . : 否
   自动配置已启用. . . . . . . . . . : 是
回复 点赞
发动态
发帖子
Java SE
创建于2007-09-28

3.4w+

社区成员

30.7w+

社区内容

Java 2 Standard Edition
社区公告
暂无公告