| New file | 
 |  |  | 
 |  |  | 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<SysFile> info(OperatingSystem os)  { | 
 |  |  |         LinkedList<SysFile> sysFiles = new LinkedList<SysFile>(); | 
 |  |  |         FileSystem fileSystem = os.getFileSystem(); | 
 |  |  |         List<OSFileStore> 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() ; | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | } |