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