当前位置: 首页 > news >正文

Java 获取当前操作系统信息

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一、获取本机IP地址

	//获取本机的IP地址
	@SuppressWarnings("unused")
	private static String getIpAddress() throws UnknownHostException {
		InetAddress address = InetAddress.getLocalHost();
		return address.getHostAddress();
	}

二、获取本机网卡的MAC地址

	public static String getMACAddress() {
		Properties props=System.getProperties();
		String address = "";
		String os = props.getProperty("os.name");
		if (os.startsWith("Windows")) {
			try {
				String command = "cmd.exe /c ipconfig /all";
				Process p = Runtime.getRuntime().exec(command);
				BufferedReader br = new BufferedReader(new InputStreamReader(
				p.getInputStream()));
				String line;
				while ((line = br.readLine()) != null) {
					//如果操作系统为中文,将下面的字符串改成"物理地址"
					//如果操作系统为英文,将下面的字符串改成"Physical Address"
					if (line.indexOf("物理地址") > 0) {
						int index = line.indexOf(":");
						index += 2;
						address = line.substring(index);
						break;
					}
				}
				br.close();
			} catch (IOException e) {}
		}
		return address.trim();
	}

三、通过IP获取本机网卡的MAC地址

	public static String getMACAddress(String ipAddress) {
		String str = "";
		String strMAC = "";
		String macAddress = "";
		try {
			Process pp = Runtime.getRuntime().exec("nbtstat -a " + ipAddress);
			InputStreamReader ir = new InputStreamReader(pp.getInputStream());
			LineNumberReader input = new LineNumberReader(ir);
			for(int i=1;i<100;i++){
				str = input.readLine();
//				System.out.println(str);
				if(str != null){
					if(str.indexOf("MAC 地址") > 1){
						strMAC = str.substring(str.indexOf("MAC 地址") + 9,str.length());
						break;
					}
				}
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		if(strMAC.length() < 17){
			return "Error!";
		}
		
		macAddress = strMAC.substring(0,2) + ":" + strMAC.substring(3,5) + ":" + 
				strMAC.substring(6,8) + ":" + strMAC.substring(9,11) + ":" + 
				strMAC.substring(12,14) + ":" + strMAC.substring(15,17);
		
		return macAddress;
	}

四、获取操作系统信息

import java.util.Properties;

Properties props=System.getProperties(); //获得系统属性集
String osUser=System.getProperty("user.name"); //获取操作系统账户
String osName = props.getProperty("os.name"); //操作系统名称
String osArch = props.getProperty("os.arch"); //操作系统构架
String osVersion = props.getProperty("os.version"); //操作系统版本

五、获取其他信息

    public static String getProperty(String key)   
    键   相关值的描述  
    java.version    Java 运行时环境版本  
    java.vendor     Java 运行时环境供应商  
    java.vendor.url     Java 供应商的 URL  
    java.home   Java 安装目录  
    java.vm.specification.version   Java 虚拟机规范版本  
    java.vm.specification.vendor    Java 虚拟机规范供应商  
    java.vm.specification.name  Java 虚拟机规范名称  
    java.vm.version     Java 虚拟机实现版本  
    java.vm.vendor  Java 虚拟机实现供应商  
    java.vm.name    Java 虚拟机实现名称  
    java.specification.version  Java 运行时环境规范版本  
    java.specification.vendor   Java 运行时环境规范供应商  
    java.specification.name     Java 运行时环境规范名称  
    java.class.version  Java 类格式版本号  
    java.class.path     Java 类路径  
    java.library.path   加载库时搜索的路径列表  
    java.io.tmpdir  默认的临时文件路径  
    java.compiler   要使用的 JIT 编译器的名称  
    java.ext.dirs   一个或多个扩展目录的路径  
    os.name     操作系统的名称  
    os.arch     操作系统的架构  
    os.version  操作系统的版本  
    file.separator  文件分隔符(在 UNIX 系统中是“/”)  
    path.separator  路径分隔符(在 UNIX 系统中是“:”)  
    line.separator  行分隔符(在 UNIX 系统中是“/n”)  
    user.name   用户的账户名称  
    user.home   用户的主目录  
    user.dir    用户的当前工作目录  

 

转载于:https://my.oschina.net/discussjava/blog/891057

相关文章:

  • import static和import的区别(转)
  • 程序员再回首
  • MYSQL坑爹的UPDATE子查询,UPDATE时避免使用子查询
  • R数据可视化----ggplot2之标度、坐标轴和图例详解
  • 深入解析SQL Server并行执行原理及实践(上) ---高继伟
  • 关于在a标签中添加点击事件的一些问题
  • Hbase 布隆过滤器BloomFilter介绍
  • E: Sub-process /usr/bin/dpkg returned an error code (1)错误解决
  • Maven属性(properties)标签的使用
  • 微信小程序开发(1) 天气预报
  • 爱情的餐桌-作家张小娴
  • NodeJs之fs的读写删移监块
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 和公务员谈恋爱是一种什么样的感受
  • 使用Spire.Doc组件利用模板导出Word文档
  • [译]Python中的类属性与实例属性的区别
  • [译]前端离线指南(上)
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • DataBase in Android
  • Druid 在有赞的实践
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Promise面试题2实现异步串行执行
  • React系列之 Redux 架构模式
  • spring security oauth2 password授权模式
  • Vue 重置组件到初始状态
  • 笨办法学C 练习34:动态数组
  • 成为一名优秀的Developer的书单
  • 给Prometheus造假数据的方法
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 使用putty远程连接linux
  • 突破自己的技术思维
  • 详解移动APP与web APP的区别
  • 一份游戏开发学习路线
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 从如何停掉 Promise 链说起
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​flutter 代码混淆
  • #includecmath
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (4)Elastix图像配准:3D图像
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (四) Graphivz 颜色选择
  • (一) springboot详细介绍
  • (转)Windows2003安全设置/维护
  • (转)大型网站架构演变和知识体系
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • @ModelAttribute 注解
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [20171101]rman to destination.txt