Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mac和Windows之间的Java文件getFreeSpace差异_Java_Windows_Macos_Java Io - Fatal编程技术网

Mac和Windows之间的Java文件getFreeSpace差异

Mac和Windows之间的Java文件getFreeSpace差异,java,windows,macos,java-io,Java,Windows,Macos,Java Io,我正在尝试从NAS获取可用空间,但Mac和Windows返回不同的值。 我使用java.io.File和getFreeSpace方法 Mac结果,不正确: 39.13465499。。。国标 Windows结果,正确: 4134.864555。。。国标 我的代码: private static String multiMediaFolder; private static long freeDiskSpace; public static void main(String[]

我正在尝试从NAS获取可用空间,但Mac和Windows返回不同的值。 我使用java.io.File和getFreeSpace方法

Mac结果,不正确

39.13465499。。。国标

Windows结果,正确

4134.864555。。。国标

我的代码:

    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看起来像是(1024*1024*1024)=1GB和(1000*1000*1000)=1GB之间的差异,这似乎是在某些操作系统代码中留下的一个非常明显的错误…它不是一个真正的错误。苹果公司有文档解释为什么选择base 10:另外,我很好奇,Finder/Windows Explorer报告了该文件夹的大小是多少?我刚刚找到了一个关于Samba(smb)已知bug的链接。由于我的NAS大小为8TB,smb无法处理此问题。因此,它在Mac电脑上不起作用,但在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);
}