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