gpt4 book ai didi

Java - Mac 和 Windows 之间的文件 getFreeSpace 区别

转载 作者:可可西里 更新时间:2023-11-01 10:46:17 24 4
gpt4 key购买 nike

我正在尝试从我的 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 版本有很大不同?

最佳答案

我得到了答案。有两个区别,就像我们在我上面的帖子中看到的那样。

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);
}

关于Java - Mac 和 Windows 之间的文件 getFreeSpace 区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23998398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com