簡體   English   中英

Java-Mac和Windows之間的文件getFreeSpace區別

[英]Java - File getFreeSpace difference between Mac and Windows

我正在嘗試從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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM