hiberfil.sys 為什么會被認作 folder 而不是 file?


File f = new File("c:\\hiberfil.sys");
//下面應該是true,但卻是false。
//不信你試試看
//Why?
System.out.println(f.isFile());

java version "1.4.2_05"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_05-b04)
Java HotSpot(TM) Client VM (build 1.4.2_05-b04, mixed mode)

5 个解决方案

#1


f.exists();//?

#2


f.exists()?;
是的,exist
這個文件是Windows用來“休眠”的,對吧。
我查過了,有

大家也可以編個小程序試試看嘛。

#3


是系統文件,偶機子里沒有hiberfil.sys。
  File f = new File("c:\\PAGEFILE.SYS");
  System.out.println(f.isFile());
亦是false。
返回false不代表是目錄。
true if and only if the file denoted by this abstract pathname exists and is a normal file; false otherwise 

It's a system file。

#4


謝謝ntzls。你的提醒很對。我做了以下的實驗:
public static void main(String[] args)
{
  File f = new File("c:\\hiberfil.sys");
  System.out.println(f.isFile());//false
  System.out.println(f.isDirectory());//also false
}

同樣的問題發生在 "C:\System Volume Information\" 和 "E:"(假設E盤是你的光驅,而你的光驅此時剛好沒有光盤在里面)。

我歸納了一下,大概是這樣:
1.Windows會“Lock”住個別文件或是文件夾,此時Administrator也沒有辦法訪問它們。
2.對於1中的文件,雖然用File.listFiles()能夠獲得它,但是File.isFile()和File.isDirectory()均返回false。
3.對於1中的文件夾,雖然用File.listFiles()能夠獲得它,且File.isDirectory()返回true,但是對它運用listFile()仍然會返回null。

希望大家指正啦。:)

#5


關於File.isFile方法,在Java doc中有詳細的說明.它的返回值是這樣的:

Returns:
true if and only if the file denoted by this abstract pathname exists and is a normal file; false otherwise

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com