사용 가능 공간 조회 API 추가
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
package com.kamco.cd.training.common.service;
|
||||
|
||||
import java.nio.file.FileStore;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
|
||||
public class FormatStorage {
|
||||
|
||||
private FormatStorage() {}
|
||||
|
||||
/** 디스크 사용량 조회 */
|
||||
public static DiskUsage getDiskUsage(Path path) throws Exception {
|
||||
FileStore store = Files.getFileStore(path);
|
||||
|
||||
long total = store.getTotalSpace();
|
||||
long usable = store.getUsableSpace();
|
||||
|
||||
return new DiskUsage(path.toString(), total, usable);
|
||||
}
|
||||
|
||||
/** 디스크 사용량 DTO */
|
||||
public record DiskUsage(String path, long totalBytes, long usableBytes) {
|
||||
|
||||
public long usedBytes() {
|
||||
return totalBytes - usableBytes;
|
||||
}
|
||||
|
||||
public double usedPercent() {
|
||||
return totalBytes == 0 ? 0.0 : (usedBytes() * 100.0) / totalBytes;
|
||||
}
|
||||
|
||||
public String totalText() {
|
||||
return formatStorageSize(totalBytes);
|
||||
}
|
||||
|
||||
public String usableText() {
|
||||
return formatStorageSize(usableBytes);
|
||||
}
|
||||
|
||||
/** 저장공간을 사람이 읽기 좋은 단위로 변환 (GB / MB) */
|
||||
private static String formatStorageSize(long bytes) {
|
||||
double gb = bytes / 1024.0 / 1024 / 1024;
|
||||
if (gb >= 1) {
|
||||
return String.format("%.1f GB", gb);
|
||||
}
|
||||
double mb = bytes / 1024.0 / 1024;
|
||||
return String.format("%.0f MB", mb);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user