我正试图从我的NAS获得可用空间,但Mac和Windows返回不同的值。 我使用java.io.File和方法getFreeSpace。
Mac结果, 不正确 :
39.13465499 ... GB
Windows结果, 正确 :
4134.864555 ... GB
我的代码:
private static String multiMediaFolder;
private static long freeDiskSpace;
public static void main(String[] args) {
if (System.getProperty("os.name").equals("Mac OS X")){
multiMediaFolder = "/Volumes/Multimedia/movies/HD";
} else if (System.getProperty("os.name").substring(0, 7).equals("Windows")){
multiMediaFolder = "\\\\QNAP\\Multimedia\\movies\\HD";
}
freeDiskSpace = new File(multiMediaFolder).getFreeSpace();
double sizeInGigaByte = (double) freeDiskSpace / 1024 / 1024 / 1024;
System.out.println(sizeInGigaByte);
}
路径不同,但指向同一个文件夹。为什么Mac版本与Windows版本不同?
答案 0 :(得分:0)
我得到了答案。有两个不同之处,就像我在上面的帖子中看到的那样。
Linux返回4326416688< - 这是千字节。
Mac(就像linux一样)返回4326416688< - 也是千字节。
Windows返回一个更大的数字4429798060032< - 这是字节。
这解释了为什么Windows值是正确的。
我现在要使用的代码:
private static String multiMediaFolder;
private static long freeDiskSpace;
private static double sizeInGigaByte;
public static void main(String[] args) {
if (System.getProperty("os.name").equals("Mac OS X")){
multiMediaFolder = "/Volumes/Multimedia/movies/HD";
freeDiskSpace = new File(multiMediaFolder).getFreeSpace();
sizeInGigaByte = (double) freeDiskSpace / 1024 / 1024;
} else if (System.getProperty("os.name").substring(0, 7).equals("Windows")){
multiMediaFolder = "\\\\QNAP\\Multimedia\\movies\\HD";
freeDiskSpace = new File(multiMediaFolder).getFreeSpace();
sizeInGigaByte = (double) freeDiskSpace / 1024 / 1024 / 1024;
}
System.out.println(sizeInGigaByte);
}