[英]Difference between getFreespace() and getUsableSpace of File
[英]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.