請問下面的說法:是否創建新的文件(文件名)對象將進程文件描述符與對象關聯?
new File(filename);
將進程文件描述符與File對象關聯?試圖搜索相同但沒有任何成功。
理想情況下,它不應該靜態地將文件描述符與File對象相關聯。每當執行函數調用時,文件描述符應該在函數調用執行的時間段內與文件對象關聯。
任何幫助表示讚賞。
請問下面的說法:是否創建新的文件(文件名)對象將進程文件描述符與對象關聯?
new File(filename);
將進程文件描述符與File對象關聯?試圖搜索相同但沒有任何成功。
理想情況下,它不應該靜態地將文件描述符與File對象相關聯。每當執行函數調用時,文件描述符應該在函數調用執行的時間段內與文件對象關聯。
任何幫助表示讚賞。
沒有文件描述符,因爲new File(filename)
不是打開該文件。這只是一個容易操作的路徑名稱表示。
文件描述符指的是打開的文件。文件沒有被打開的事實並不明確documented,但是從最不驚訝的原則出發,並且沒有列出與未能打開文件相對應的例外。
不,new File(...)
只是代表文件名的對象,甚至沒有檢查是否存在具有該名稱和/或路徑的文件(或目錄)。
號可以通過檢查文件類自己的來源,從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對象可以表示不存在的文件,所以不可能將描述符與它關聯。
迂迴模式:無論是`normalize`還是`prefixLength` * *都可以打開文件。雖然擁有源代碼是一筆巨大的資產,但這種屬性應該真正從API推導出來。 – 2011-02-17 15:07:19