2011-02-17 74 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