Java 使用File获取磁盘分区大小 getFreeSpace()

发布时间:2018-08-22作者:laosun阅读(6846)

Java

Java 使用File获取磁盘分区大小 getFreeSpace()、getUsableSpace()、getTotalSpace()。经过博主的测试,在windows系统下获取到的值基本上没有问题。但是在linux系统下,获取到的值和真实值是相差一些的。

    博主之前曾经发过一篇文章是 java 获取Linux 磁盘空间的使用情况 

    文章中使用java执行linux指令进行截取获取结果值。

    今天我们来使用java内置IO,File来获取磁盘使用情况。 代码如下:

    import java.io.File;
    
    public class DiskTest {
    
    	public static void main(String[] args) {
    		File win = new File("/Volumes/sun(32G)/1534515371484.jpg");
    		System.out.println(win.getName()+" 文件所在磁盘分区情况如下:");
    		System.out.println("Free space = " + getPrintSize(win.getFreeSpace()));
    		System.out.println("Usable space = " + getPrintSize(win.getUsableSpace()));
    		System.out .println("Total space = " + getPrintSize(win.getTotalSpace()));
    	}
    
    	public static String getPrintSize(long size) {
    		// 如果字节数少于1024,则直接以B为单位,否则先除于1024,后3位因太少无意义
    		if (size < 1024) {
    			return String.valueOf(size) + "B";
    		} else {
    			size = size / 1024;
    		}
    		// 如果原字节数除于1024之后,少于1024,则可以直接以KB作为单位
    		// 因为还没有到达要使用另一个单位的时候
    		// 接下去以此类推
    		if (size < 1024) {
    			return String.valueOf(size) + "KB";
    		} else {
    			size = size / 1024;
    		}
    		if (size < 1024) {
    			// 因为如果以MB为单位的话,要保留最后1位小数,
    			// 因此,把此数乘以100之后再取余
    			size = size * 100;
    			return String.valueOf((size / 100)) + "."
    					+ String.valueOf((size % 100)) + "MB";
    		} else {
    			// 否则如果要以GB为单位的,先除于1024再作同样的处理
    			size = size * 100 / 1024;
    			return String.valueOf((size / 100)) + "."
    					+ String.valueOf((size % 100)) + "GB";
    		}
    	}
    }

    输出结果:

    1534515371484.jpg 文件所在磁盘分区情况如下:
    Free space = 8.54GB
    Usable space = 8.54GB
    Total space = 29.30GB

    经过测试:Mac OS系统和Windows系统下读取U盘的大小是一样的。

    但是在Mac OS系统和linux系统上读取本机磁盘空间时,读取到的值总是差那么一点。具体原因不知,等我搞明白的那一天,再将答案贴过来。



5 +1

版权声明

 Java  源码

 请文明留言

0 条评论