java 获取 windows 的IP地址,并且读取cmd时不会出现中文乱码

在网上搜到了获取 windows 的 ipv4 地址的方法:

package com.abcd;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;

// 用读取 cmd 的方式,获取本机 IPv4 地址
public class IPUtil {
    // main
    public static void main( String[] a ) {
        Process pb = null;
        //List<String> address  = new ArrayList<String>();

        //读取进程输出值
        try{
            pb = new ProcessBuilder("ipconfig", "/all").start();
        }catch(Exception e){
            //return address;
        }

        StringBuffer stb = new StringBuffer();

        // 读取 cmd 会 出现中文乱码
        //InputStream is = pb.getInputStream();
        //InputStreamReader isr = new InputStreamReader( is );
        //BufferedReader br = new BufferedReader( isr );

        // 读取cmd时不会出现中文乱码
        InputStreamReader isr = new InputStreamReader( pb.getInputStream(), Charset.forName( "GBK" ) );
        BufferedReader br = new BufferedReader( isr );

        String st = "";

        try {
            while ( ( st = br.readLine() ) != null ) {
                stb.append( st + "\n" );

                if ( st.contains( "IPv4 地址" ) ) {
                    System.out.println( st.trim().replace( ":", "" ).replace( "(首选)", "" ) );
                }
            }
        } catch ( Exception e ) {
            e.printStackTrace();
        } finally {
            try {
                if ( br != null ) {
                    br.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

            try {
                if ( isr != null ) {
                    isr.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

}

-----------------------------------------------
InetAddress address = InetAddress.getLocalHost();
System.out.println( address.getHostAddress() );  // 获取 windows 的IP地址,如:192.168.0.121

//System.out.println(address);  // PC-name/192.168.0.121

           ----- 另外发现用这种方法获取到的 192.168 开头的IP地址是无效的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值