Java获取系统信息Word下载.docx
- 文档编号:20788299
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:18
- 大小:20.50KB
Java获取系统信息Word下载.docx
《Java获取系统信息Word下载.docx》由会员分享,可在线阅读,更多相关《Java获取系统信息Word下载.docx(18页珍藏版)》请在冰豆网上搜索。
//总的物理内存+虚拟内存
longtotalvirtualMemory=osmxb.getTotalSwapSpaceSize();
//剩余的物理内存
longfreePhysicalMemorySize=osmxb.getFreePhysicalMemorySize();
Doublecompare=(Double)(1-freePhysicalMemorySize*1.0/totalvirtualMemory)*100;
Stringstr="
内存已使用:
"
+compare.intValue()+"
%"
;
returnstr;
//获取文件系统使用率
publicstaticList<
String>
getDisk(){
//操作系统
List<
list=newArrayList<
();
for(charc='
A'
c<
='
Z'
c++){
StringdirName=c+"
:
/"
Filewin=newFile(dirName);
if(win.exists()){
longtotal=(long)win.getTotalSpace();
longfree=(long)win.getFreeSpace();
Doublecompare=(Double)(1-free*1.0/total)*100;
Stringstr=c+"
盘
已使用"
list.add(str);
}
returnlist;
//获得cpu使用率
publicstaticStringgetCpuRatioForWindows(){
try{
StringprocCmd=System.getenv("
windir"
)+"
\\system32\\wbem\\wmic.exeprocessgetCaption,CommandLine,KernelModeTime,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount"
//取进程信息
long[]c0=readCpu(Runtime.getRuntime().exec(procCmd));
Thread.sleep(CPUTIME);
long[]c1=readCpu(Runtime.getRuntime().exec(procCmd));
if(c0!
=null&
&
c1!
=null){
longidletime=c1[0]-c0[0];
longbusytime=c1[1]-c0[1];
return"
CPU使用率:
+Double.valueOf(PERCENT*(busytime)*1.0/(busytime+idletime)).intValue()+"
}else{
+0+"
}catch(Exceptionex){
ex.printStackTrace();
//读取cpu相关信息
privatestaticlong[]readCpu(finalProcessproc){
long[]retn=newlong[2];
proc.getOutputStream().close();
InputStreamReaderir=newInputStreamReader(proc.getInputStream());
LineNumberReaderinput=newLineNumberReader(ir);
Stringline=input.readLine();
if(line==null||line.length()<
FAULTLENGTH){
returnnull;
intcapidx=line.indexOf("
Caption"
);
intcmdidx=line.indexOf("
CommandLine"
introcidx=line.indexOf("
ReadOperationCount"
intumtidx=line.indexOf("
UserModeTime"
intkmtidx=line.indexOf("
KernelModeTime"
intwocidx=line.indexOf("
WriteOperationCount"
longidletime=0;
longkneltime=0;
longusertime=0;
while((line=input.readLine())!
if(line.length()<
wocidx){
continue;
//字段出现顺序:
Caption,CommandLine,KernelModeTime,ReadOperationCount,
//ThreadCount,UserModeTime,WriteOperation
Stringcaption=substring(line,capidx,cmdidx-1).trim();
Stringcmd=substring(line,cmdidx,kmtidx-1).trim();
if(cmd.indexOf("
wmic.exe"
)>
=0){
Strings1=substring(line,kmtidx,rocidx-1).trim();
Strings2=substring(line,umtidx,wocidx-1).trim();
if(caption.equals("
SystemIdleProcess"
)||caption.equals("
System"
)){
if(s1.length()>
0)
idletime+=Long.valueOf(s1).longValue();
if(s2.length()>
idletime+=Long.valueOf(s2).longValue();
kneltime+=Long.valueOf(s1).longValue();
usertime+=Long.valueOf(s2).longValue();
retn[0]=idletime;
retn[1]=kneltime+usertime;
returnretn;
}finally{
proc.getInputStream().close();
}catch(Exceptione){
e.printStackTrace();
/**
*由于String.subString对汉字处理存在问题(把一个汉字视为一个字节),因此在包含汉字的字符串时存在隐患,现调整如下:
*@paramsrc要截取的字符串
*@paramstart_idx开始坐标(包括该坐标)
*@paramend_idx截止坐标(包括该坐标)
*@return
*/
privatestaticStringsubstring(Stringsrc,intstart_idx,intend_idx){
byte[]b=src.getBytes();
Stringtgt="
for(inti=start_idx;
i<
=end_idx;
i++){
tgt+=(char)b[i];
returntgt;
2.利用第三方的jar包:
(Hyperic-hq官方网站:
)
通过Hyperic-hq产品的基础包sigar.jar来实现服务器状态数据的获取。
Sigar.jar包是通过本地方法来调用操作系统API来获取系统相关数据。
Windows操作系统下Sigar.jar依赖sigar-amd64-winnt.dll或sigar-x86-winnt.dll,linux操作系统下则依赖libsigar-amd64-linux.so或libsigar-x86-linux.so
import.InetAddress;
import.UnknownHostException;
importorg.hyperic.sigar.CpuInfo;
importorg.hyperic.sigar.CpuPerc;
importorg.hyperic.sigar.FileSystem;
importorg.hyperic.sigar.FileSystemUsage;
importorg.hyperic.sigar.Mem;
importorg.hyperic.sigar.NetFlags;
importorg.hyperic.sigar.NetInterfaceConfig;
importorg.hyperic.sigar.NetInterfaceStat;
importorg.hyperic.sigar.OperatingSystem;
importorg.hyperic.sigar.Sigar;
importorg.hyperic.sigar.SigarException;
importorg.hyperic.sigar.SigarNotImplementedException;
importorg.hyperic.sigar.Swap;
publicclassSysInfo{
//1.CPU资源信息
//a)CPU数量(单位:
个)
publicstaticintgetCpuCount()throwsSigarException{
Sigarsigar=newSigar();
returnsigar.getCpuInfoList().length;
sigar.close();
//b)CPU的总量(单位:
HZ)及CPU的相关信息
publicvoidgetCpuTotal(){
CpuInfo[]infos;
infos=sigar.getCpuInfoList();
for(inti=0;
infos.length;
i++){//不管是单块CPU还是多CPU都适用
CpuInfoinfo=infos[i];
System.out.println("
mhz="
+info.getMhz());
//CPU的总量MHz
vendor="
+info.getVendor());
//获得CPU的卖主,如:
Intel
model="
+info.getModel());
//获得CPU的类别,如:
Celeron
cachesize="
+info.getCacheSize());
//缓冲存储器数量
}catch(SigarExceptione){
//c)CPU的用户使用量、系统使用剩余量、总的剩余量、总的使用占用量等(单位:
100%)
publicvoidtestCpuPerc(){
//方式一,主要是针对一块CPU的情况
CpuPerccpu;
cpu=sigar.getCpuPerc();
printCpuPerc(cpu);
//方式二,不管是单块CPU还是多CPU都适用
CpuPerccpuList[]=null;
cpuList=sigar.getCpuPercList();
return;
cpuList.length;
printCpuPerc(cpuList[i]);
privatevoidprintCpuPerc(CpuPerccpu){
User:
+CpuPerc.format(cpu.getUser()));
//用户使用率
Sys:
+CpuPerc.format(cpu.getSys()));
//系统使用率
Wait:
+CpuPerc.format(cpu.getWait()));
//当前等待率
Nice:
+CpuPerc.format(cpu.getNice()));
//
Idle:
+CpuPerc.format(cpu.getIdle()));
//当前空闲率
Total:
+CpuPerc.format(cpu.getCombined()));
//总的使用率
//2.内存资源信息
publicvoidgetPhysicalMemory(){
//a)物理内存信息
Memmem;
mem=sigar.getMem();
//内存总量
Total="
+mem.getTotal()/1024L+"
Kav"
//当前内存使用量
Used="
+mem.getUsed()/1024L+"
Kused"
//当前内存剩余量
Free="
+mem.getFree()/1024L+"
Kfree"
//b)系统页面文件交换区信息
Swapswap=sigar.getSwap();
//交换区总量
+swap.getTotal()/1024L+"
//当前交换区使用量
+swap.getUsed()/1024L+"
//当前交换区剩余量
+swap.getFree()/1024L+"
//3.操作系统信息
//a)取到当前操作系统的名称:
publicStringgetPlatformName(){
Stringhostname="
hostname=InetAddress.getLocalHost().getHostName();
}catch(Exceptionexc){
hostname=sigar.getNetInfo().getHostName();
hostname="
localhost.unknown"
returnhostname;
//b)取当前操作系统的信息
publicvoidtestGetOSInfo(){
OperatingSystemOS=OperatingSystem.getInstance();
//操作系统内核类型如:
386、486、586等x86
OS.getArch()="
+OS.getArch());
System.out.prin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 获取 系统 信息
![提示](https://static.bdocx.com/images/bang_tan.gif)