硬件检测之磁盘信息_v1.0.0

本文介绍了如何使用Oshi库在Java中获取并处理磁盘空间信息,包括总大小、剩余空间和使用率的计算,通过Lombok简化数据模型。通过`Hardware`类展示具体代码实现,适用于系统性能监控和资源管理应用。
摘要由CSDN通过智能技术生成

v1.0.0

效果

在这里插入图片描述

剩余总大小:980.03469085693359375GB
硬盘总大小:1155.080066680908203125GB

代码

引入依赖

			<oshi.version>3.9.1</oshi.version>
			... ...
			<dependency>
                <groupId>com.github.oshi</groupId>
                <artifactId>oshi-core</artifactId>
                <version>${oshi.version}</version>
            </dependency>

逻辑

  • Disk.java
import lombok.Data;

import java.math.BigDecimal;

/**
 * 功能:磁盘
 *
 * @author: cc
 * @qq: 8416837
 * @date: 2021/5/27 16:22
 */
@Data
public class Disk {
    /**
     * 剩余空间
     */
    private BigDecimal free;
    private BigDecimal total;
    private BigDecimal used;
    private String remain;
    /**
     * 使用的百分比
     */
    private String usedPercent;

}
  • Hardware.java
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import oshi.SystemInfo;
import oshi.software.os.FileSystem;
import oshi.software.os.OSFileStore;
import oshi.software.os.OperatingSystem;

import java.math.BigDecimal;

/**
 * 功能:硬件检测
 *
 * @author: cc
 * @qq: 8416837
 * @date: 2021/5/27 16:23
 */
public class Hardware{

    /**
     * 功能描述: 获取硬件之磁盘
     * @param: []
     * @return: com.cc.common.utils.Disk
     * @qq: 8416837
     * @author: cc
     * @date: 2021/5/27
     */
    public static Disk getDiskInfo() {
       
        // 初始化
        Disk disk = new Disk();
        BigDecimal total = new BigDecimal("0");
        BigDecimal free = new BigDecimal("0");
        BigDecimal used;
        String remain = "0%";
        String usedPercent = "0%";

        // 系统信息
        SystemInfo si = new SystemInfo();
        OperatingSystem os = si.getOperatingSystem();
        FileSystem fileSystem = os.getFileSystem();

        OSFileStore[] fsArray = fileSystem.getFileStores();
        for (OSFileStore fs : fsArray) {
            total = total.add(new BigDecimal(fs.getTotalSpace()));
            free = free.add(new BigDecimal(fs.getUsableSpace())); // 可用
        }

        used = total.subtract(free);

        String freeGB = transBit2GB(free);
        String totalGB = transBit2GB(total);

        System.out.println(String.format("剩余总大小:%s", freeGB));
        System.out.println(String.format("硬盘总大小:%s", totalGB));

        boolean dividendIsNotZero = total.compareTo(new BigDecimal("0")) != 0; // 除数不为0

        if (dividendIsNotZero) {
            Float remainFloat = Float.valueOf(free.divide(new BigDecimal(1073741824F)) + StringPool.EMPTY) /
                    Float.valueOf(total.divide(new BigDecimal(1073741824F)) + StringPool.EMPTY);
            remain = remainFloat * 100 + StringPool.PERCENT;
            usedPercent = (1F - remainFloat) * 100 + StringPool.PERCENT;
//            remain = (free.divide(total) ).multiply(new BigDecimal(100F)) + StringPool.PERCENT;
        }

        disk.setTotal(total);
        disk.setFree(free);
        disk.setUsed(used);
        disk.setRemain(remain);
        disk.setUsedPercent(usedPercent);

        return disk;
    }

    /**
     * 功能描述: 位转GB
     * @param: [size:位数值]
     * @return: java.lang.String
     * @qq: 8416837
     * @author: cc
     * @date: 2021/5/27
     */
    private static String transBit2GB(BigDecimal size) {
        
        return size.divide(new BigDecimal(1073741824F)) + "GB";
    }

    public static void main(String[] args) {
        // 测试磁盘工具
        getDiskInfo();
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值