package com.dy.common.util; import lombok.Data; import oshi.software.os.FileSystem; import oshi.software.os.OSFileStore; import oshi.software.os.OperatingSystem; import java.util.LinkedList; import java.util.List; /** * @Author: liurunyu * @Date: 2024/8/2 13:54 * @Description */ public class SysFileSysUtil { /** * 磁盘信息 */ public static LinkedList info(OperatingSystem os) { LinkedList sysFiles = new LinkedList(); FileSystem fileSystem = os.getFileSystem(); List fsArray = fileSystem.getFileStores(); for (OSFileStore fs : fsArray) { long free = fs.getUsableSpace(); long total = fs.getTotalSpace(); long used = total - free; SysFile sysFile = new SysFile(); sysFile.setDirName(fs.getMount()); sysFile.setSysTypeName(fs.getType()); sysFile.setTypeName(fs.getName()); sysFile.setTotal(convertFileSize(total)); sysFile.setFree(convertFileSize(free)); sysFile.setUsed(convertFileSize(used)); sysFile.setUsage(DoubleUtil.mul(DoubleUtil.div(used, total, 4), 100)); sysFiles.add(sysFile); } return sysFiles ; } /** * 字节转换 * * @param size 字节大小 * @return 转换后值 */ public static String convertFileSize(long size) { long kb = 1024; long mb = kb * 1024; long gb = mb * 1024; if (size >= gb) { return String.format("%.1f GB", (float) size / gb); } else if (size >= mb) { float f = (float) size / mb; return String.format(f > 100 ? "%.0f MB" : "%.1f MB", f); } else if (size >= kb) { float f = (float) size / kb; return String.format(f > 100 ? "%.0f KB" : "%.1f KB", f); } else { return String.format("%d B", size); } } @Data public static class SysFile{ /** * 盘符路径 */ public String dirName; /** * 盘符类型 */ public String sysTypeName; /** * 文件类型 */ public String typeName; /** * 总大小 */ public String total; /** * 剩余大小 */ public String free; /** * 已经使用量 */ public String used; /** * 资源的使用率 */ public double usage; public String toString(){ StringBuilder sb = new StringBuilder() ; sb.append(" 磁盘" + dirName + "\n"); sb.append(" 盘符类型:" + sysTypeName + "\n"); sb.append(" 文件类型:" + typeName + "\n"); sb.append(" 总大小:" + total + "\n"); sb.append(" 剩余大小:" + free + "\n"); sb.append(" 已经使用量:" + used + "\n"); sb.append(" 资源使用率:" + usage + "\n"); return sb.toString() ; } } }