| 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() ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|