发布时间:2018-08-22作者:laosun阅读(6636)
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系统上读取本机磁盘空间时,读取到的值总是差那么一点。具体原因不知,等我搞明白的那一天,再将答案贴过来。
版权属于: 技术客
原文地址: https://www.sunjs.com/article/detail/ee8e0f1b6e8e4062a2621c22da829903.html
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。