在编程中,我们经常需要查看磁盘的容量来做相应的操作。Java的File类为我们提供了获取的方法,getTotalSpace(),getFreeSpace(),getUsableSpace()等方法。但是获取的空间大小都是以字节为单位的long类型的量。非常不直观,假如我们编写的在一些界面中需要显示与此数值相关的量,转化成B,KB,MB,GB这样的单位显然比较合适。
这里我给出这个工具,代码的思路在注释里都有详细的说明。
public class CapacityTransform {
private static final long[] level = {
1L << 0,/* 1 */
1L << 10,/* 1024 , 1KB*/
1L << 20,/* 1024^2 , 1MB*/
1L << 30,/* 1024^3 , 1GB*/
1L << 40,/* 1024^4 , 1TB*/
} ;
private static final String[] capacityUnits = {
"B",
"KB",
"MB",
"GB",
"TB",
};
public CapacityTransform() {
}
public static String SizeTransform(long size) {
//小于0,无效长度
if (size < 0) {
return "非法长度!";
}
//小于1024 , 1KB, 此时单位用B
if (size < level[1]) {
return transform(size, 0);
}
//小于1024^2, 1MB,