1>對於空目錄,linux命令du將顯示0大小,這意味着它不使用磁盤空間。對? 但是java中的File.length()不會顯示零,而是會顯示使用某些字節的空目錄。爲什麼java中的File.length()的大小與linux du命令的大小不同
如果Unix中的所有內容都是文件並且應占用磁盤空間,那麼Java就在這裏,爲什麼du會顯示其0個塊。
如果它應該是0塊,那麼爲什麼Java會顯示空目錄使用的某些字節?
$ mkdir empty_directory
$ du -h empty_directory/
0B empty_directory/
$ du empty_directory
0 empty_directory
File f = new File("/test/empty_directory");
if (f.exists() && f.isDirectory()) {
System.out.println(f.length());
}
68
2>對於同一個沒有空文件,Linux命令du顯示的大小仍然與java中的File.length()不同。
僅僅是來自差異單位的原因:du使用的塊和File.length()使用的字節數?
$ du -h oneline.txt
4.0K oneline.txt
$ du oneline.txt
8 oneline.txt
$ ls -s oneline.txt
8 oneline.txt
-s顯示實際使用的每個文件的文件系統的塊的數量,以512個字節,其中部分單元被向上舍入到下一個整數值的單位。如果輸出到終端,則在列表之前的一行中輸出所有文件大小的總和。環境變量BLOCKSIZE覆蓋512字節的單位大小。
File f = new File("/test/oneline.txt");
if (f.exists() && f.isFile()) {
System.out.println(f.length());
}
26
困惑。你能否就此提供一些幫助?
您使用的是哪個版本的java?來自javadoc的 – STaefi
返回由此抽象路徑名錶示的文件的長度。如果此路徑名錶示目錄,則返回值未指定。「# –
對於第一個問題,javadoc說:*如果此路徑名錶示目錄*,則返回值未指定。 –