借助Sigar API获取磁盘信息

        Sigar(全称System Information Gatherer And Reporter,即系统信息收集报表器),它提供了一个开源的跨平台的收集计算机硬件和操作系统信息的API(该API底层接口用C语言编写),本文将演示如何借助Sigar API获取磁盘信息:

package com.ghj.packageoftest;

import org.hyperic.sigar.FileSystem;
import org.hyperic.sigar.FileSystemUsage;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;

/**
 * 借助Sigar API获取磁盘信息
 * 
 * @author GaoHuanjie 
 */
public class DiskTool {

	public static void main(String[] args) throws SigarException {
		Sigar sigar = new Sigar();

        FileSystem [] fileSystemArray = sigar.getFileSystemList();
        for ( FileSystem fileSystem:fileSystemArray ) {
        	System.out.println("fileSystem dirName:" + fileSystem.getDirName());//分区的盘符名称 
            System.out.println("fileSystem devName:" + fileSystem.getDevName());//分区的盘符名称 
            System.out.println("fileSystem typeName:" + fileSystem.getTypeName());// 文件系统类型名,比如本地硬盘、光驱、网络文件系统等  
            System.out.println("fileSystem sysTypeName:" + fileSystem.getSysTypeName());//文件系统类型,比如 FAT32、NTFS
            System.out.println("fileSystem options:" + fileSystem.getOptions());
            System.out.println("fileSystem flags:" + fileSystem.getFlags());
            System.out.println("fileSystem type:" + fileSystem.getType());
            
            FileSystemUsage fileSystemUsage = null;
            
            try {
            	fileSystemUsage = sigar.getFileSystemUsage(fileSystem.getDirName());
            } catch (SigarException e) {//当fileSystem.getType()为5时会出现该异常——此时文件系统类型为光驱
                continue;
            }
            System.out.println("fileSystemUsage total:" + fileSystemUsage.getTotal() + "KB");// 文件系统总大小
            System.out.println("fileSystemUsage free:" + fileSystemUsage.getFree() + "KB");// 文件系统剩余大小 
            System.out.println("fileSystemUsage used:" + fileSystemUsage.getUsed() + "KB");// 文件系统已使用大小
            System.out.println("fileSystemUsage avail:" + fileSystemUsage.getAvail() + "KB");// 文件系统可用大小
            System.out.println("fileSystemUsage files:" + fileSystemUsage.getFiles());
            System.out.println("fileSystemUsage freeFiles:" + fileSystemUsage.getFreeFiles());
            System.out.println("fileSystemUsage diskReadBytes:" + fileSystemUsage.getDiskReadBytes());
            System.out.println("fileSystemUsage diskWriteBytes:" + fileSystemUsage.getDiskWriteBytes());
            System.out.println("fileSystemUsage diskQueue:" + fileSystemUsage.getDiskQueue());
            System.out.println("fileSystemUsage diskServiceTime:" + fileSystemUsage.getDiskServiceTime());
            System.out.println("fileSystemUsage usePercent:" + fileSystemUsage.getUsePercent() * 100 + "%");// 文件系统资源的利用率  
    		System.out.println("fileSystemUsage diskReads:" + fileSystemUsage.getDiskReads());
            System.out.println("fileSystemUsage diskWrites:" + fileSystemUsage.getDiskWrites());
    		System.err.println("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
        }
	}
}

        【0分下载示例工程

Sigar 是一个跨平台的系统信息收集库,可以获取系统的 CPU、内存、磁盘、网络等信息。以下是获取系统信息的示例代码: ```java import org.hyperic.sigar.*; public class SigarDemo { public static void main(String[] args) throws SigarException { Sigar sigar = new Sigar(); System.out.println("CPU信息:"); CpuInfo[] cpuInfos = sigar.getCpuInfoList(); for (CpuInfo cpuInfo : cpuInfos) { System.out.println("CPU型号:" + cpuInfo.getModel()); System.out.println("CPU频率:" + cpuInfo.getMhz() + "MHz"); System.out.println("CPU核数:" + cpuInfo.getTotalCores()); } System.out.println("内存信息:"); Mem mem = sigar.getMem(); System.out.println("总内存:" + mem.getTotal() / 1024 / 1024 + "MB"); System.out.println("已用内存:" + mem.getUsed() / 1024 / 1024 + "MB"); System.out.println("剩余内存:" + mem.getFree() / 1024 / 1024 + "MB"); System.out.println("磁盘信息:"); FileSystem[] fileSystems = sigar.getFileSystemList(); for (FileSystem fileSystem : fileSystems) { System.out.println("盘符:" + fileSystem.getDirName()); System.out.println("盘符类型:" + fileSystem.getTypeName()); FileSystemUsage usage = sigar.getFileSystemUsage(fileSystem.getDirName()); System.out.println("总大小:" + usage.getTotal() / 1024 / 1024 + "MB"); System.out.println("已用大小:" + usage.getUsed() / 1024 / 1024 + "MB"); System.out.println("剩余大小:" + usage.getFree() / 1024 / 1024 + "MB"); } System.out.println("网络信息:"); NetInterfaceConfig[] netConfigs = sigar.getNetInterfaceConfigList(); for (NetInterfaceConfig netConfig : netConfigs) { System.out.println("网络设备名:" + netConfig.getName()); System.out.println("IP地址:" + netConfig.getAddress()); System.out.println("子网掩码:" + netConfig.getNetmask()); } } } ``` 注意:需要引入 sigar.jar 和 sigar-amd64-winnt.dll(或其它平台对应的库文件)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿老高

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值