2011-02-17 72 views

回答

3

沒有文件描述符,因爲new File(filename)不是打開該文件。這只是一個容易操作的路徑名稱表示。

文件描述符指的是打開的文件。文件沒有被打開的事實並不明確documented,但是從最不驚訝的原則出發,並且沒有列出與未能打開文件相對應的例外。

2

不,new File(...)只是代表文件名的對象,甚至沒有檢查是否存在具有該名稱和/或路徑的文件(或目錄)。

0

號可以通過檢查文件類自己的來源,從JDK 1.6.0_22看到這一點:

public File(String pathname) { 
    if (pathname == null) { 
     throw new NullPointerException(); 
    } 
    this.path = fs.normalize(pathname); 
    this.prefixLength = fs.prefixLength(this.path); 
} 

既然你可以調用該文件的構造與尚不存在的路徑,並且由於File對象可以表示不存在的文件,所以不可能將描述符與它關聯。

+0

迂迴模式:無論是`normalize`還是`prefixLength` * *都可以打開文件。雖然擁有源代碼是一筆巨大的資產,但這種屬性應該真正從API推導出來。 – 2011-02-17 15:07:19