空间和空间使用率"/>
java中查询 liunx系统中指定目录下的内空间和空间使用率
需求:
查询 liunx系统中指定目录下的内空间和空间使用率
//查询内存空间剩余空间
public BigDecimal getDirectoryFreeSize(String directoryPath) {long totalSize = getDirectorySize(directoryPath);long usedSize = getUsedSize(directoryPath);long freeSize = totalSize - usedSize;return byteToPB(freeSize);}// 查询内存使用率public String getDirectoryUseRate(String directoryPath) {long usedSize = getUsedSize(directoryPath);long directorySize = getDirectorySize(directoryPath);// 创建一个数值格式化对象NumberFormat numberFormat = NumberFormat.getInstance();// 设置精确到小数点后2位numberFormat.setMaximumFractionDigits(2);return directorySize == 0 ? Constants.ZERO.toString().concat(Constants.PERCENTAGE) : numberFormat.format(usedSize / directorySize).concat(Constants.PERCENTAGE);}//查询内存总大小public long getDirectorySize(String directoryPath) {long size = 0;try {ProcessBuilder processBuilder = new ProcessBuilder("du", "-s", directoryPath);Process process = processBuilder.start();BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));String line = reader.readLine();size = Long.parseLong(line.trim());logger.info("Total size of mounted directory: " + size + " bytes");} catch (IOException e) {logger.error("get Total size of mounted directory fail");}return size;}//查询已使用大小public long getUsedSize(String directoryPath) {long usedSize = 0;try {ProcessBuilder processBuilder = new ProcessBuilder("du", "-c", "-s", directoryPath);Process process = processBuilder.start();BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));String line = reader.readLine();String[] values = line.split("\\s+");usedSize = Long.parseLong(values[0]);logger.info("Used size of mounted directory: " + usedSize + " bytes");} catch (IOException e) {logger.error("get Used size of mounted directory fail");}return usedSize;}// byte转PBpublic BigDecimal byteToPB(long bytes) {BigDecimal size = new BigDecimal(bytes);BigDecimal u = new BigDecimal(1024 * 1024 * 1024 * 1024L);return size.divide(u, 2, RoundingMode.DOWN);}
更多推荐
java中查询 liunx系统中指定目录下的内空间和空间使用率
发布评论