JavaTM 2 Platform
Standard Ed. 5.0

java.io
类 File

java.lang.Object
  继承者 java.io.File
所有已实现的接口:
Serializable, Comparable<File>

public class File
extends Object
implements Serializable, Comparable<File>

文件和目录路径名的抽象表示形式。

用户界面和操作系统使用与系统相关的路径名字符串 来命名文件和目录。此类呈现分层路径名的一个抽象的、与系统无关的视图。抽象路径名 有两个组件:

  1. 一个可选的与系统有关的前缀 字符串,比如盘符,"/" 表示 UNIX 中的根目录,"\\\\" 表示 Microsoft Windows UNC 路径名,以及
  2. 零个或更多字符串名称 的序列。
除了最后一个,抽象路径名中的每个名称代表一个目录;最后一个名称既可以代表目录,也可以代表文件。空的 抽象路径名没有前缀和名称序列。

路径名字符串与抽象路径名之间的转换与系统有关。将抽象路径名转换为路径名字符串时,每个名称与下一个名称之间由单个默认分隔符字符 隔开。默认名称分隔符由系统属性 file.separator 定义,也可以从此类的公共静态字段 separatorseparatorChar 中得到。将路径名字符串转换为抽象路径名时,可以使用默认名称分隔符或者受基础系统支持的其他任何名称分隔符来分隔其中的名称。

无论是抽象路径名还是字符串路径名,都可以是绝对 路径名或相对 路径名。绝对路径名是完整的路径名,不需要任何其他信息就可以定位自身表示的文件。相反,相对路径名必须使用来自其他路径名的信息进行解释。默认情况下,java.io 包中的类总是根据当前用户目录来分析相对路径名。此目录由系统属性 user.dir 指定,通常是 Java 虚拟机的调用目录。

前缀的概念用于处理 UNIX 平台的根目录,以及 Microsoft Windows 平台上的盘符、根目录和 UNC 路径名,如下所示:

File 类的实例是不可变的;也就是说,一旦创建,File 对象表示的抽象路径名将永不改变。

从以下版本开始:
JDK1.0
另请参见:
序列化表格

字段摘要
static String pathSeparator
          与系统有关的路径分隔符字符,出于方便考虑,它被表示为一个字符串。
static char pathSeparatorChar
          与系统有关的默认路径分隔符字符。
static String separator
          与系统有关的默认名称分隔符,出于方便考虑,它被表示为一个字符串。
static char separatorChar
          与系统有关的默认名称分隔符。
 
构造方法摘要
File(File parent, String child)
          根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
File(String pathname)
          通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例。
File(String parent, String child)
          根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File(java.net.URI uri)
          通过将给定的 file: URI 转换成一个抽象路径名来创建一个新的 File 实例。
 
方法摘要
 boolean canRead()
          测试应用程序是否可以读取此抽象路径名表示的文件。
 boolean canWrite()
          测试应用程序是否可以修改此抽象路径名表示的文件。
 int compareTo(File pathname)
          按字母顺序比较两个抽象路径名。
 boolean createNewFile()
          当且仅当不存在具有此抽象路径名指定的名称的文件时,原子地创建由此抽象路径名指定的一个新的空文件。
static File createTempFile(String prefix, String suffix)
          在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。
static File createTempFile(String prefix, String suffix, File directory)
           在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。
 boolean delete()
          删除此抽象路径名表示的文件或目录。
 void deleteOnExit()
          在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
 boolean equals(Object obj)
          测试此抽象路径名与给定对象是否相等。
 boolean exists()
          测试此抽象路径名表示的文件或目录是否存在。
 File getAbsoluteFile()
          返回抽象路径名的绝对路径名形式。
 String getAbsolutePath()
          返回抽象路径名的绝对路径名字符串。
 File getCanonicalFile()
          返回此抽象路径名的规范形式。
 String getCanonicalPath()
          返回抽象路径名的规范路径名字符串。
 String getName()
          返回由此抽象路径名表示的文件或目录的名称。
 String getParent()
          返回此抽象路径名的父路径名的路径名字符串,如果此路径名没有指定父目录,则返回 null
 File getParentFile()
          返回此抽象路径名的父路径名的抽象路径名,如果此路径名没有指定父目录,则返回 null
 String getPath()
          将此抽象路径名转换为一个路径名字符串。
 int hashCode()
          计算此抽象路径名的哈希码。
 boolean isAbsolute()
          测试此抽象路径名是否为绝对路径名。
 boolean isDirectory()
          测试此抽象路径名表示的文件是否是一个目录。
 boolean isFile()
          测试此抽象路径名表示的文件是否是一个标准文件。
 boolean isHidden()
          测试此抽象路径名指定的文件是否是一个隐藏文件。
 long lastModified()
          返回此抽象路径名表示的文件最后一次被修改的时间。
 long length()
          返回由此抽象路径名表示的文件的长度。
 String[] list()
          返回由此抽象路径名所表示的目录中的文件和目录的名称所组成字符串数组。
 String[] list(FilenameFilter filter)
          返回由包含在目录中的文件和目录的名称所组成的字符串数组,这一目录是通过满足指定过滤器的抽象路径名来表示的。
 File[] listFiles()
          返回一个抽象路径名数组,这些路径名表示此抽象路径名所表示目录中的文件。
 File[] listFiles(FileFilter filter)
          返回表示此抽象路径名所表示目录中的文件和目录的抽象路径名数组,这些路径名满足特定过滤器。
 File[] listFiles(FilenameFilter filter)
          返回表示此抽象路径名所表示目录中的文件和目录的抽象路径名数组,这些路径名满足特定过滤器。
static File[] listRoots()
          列出可用的文件系统根目录。
 boolean mkdir()
          创建此抽象路径名指定的目录。
 boolean mkdirs()
          创建此抽象路径名指定的目录,包括创建必需但不存在的父目录。
 boolean renameTo(File dest)
          重新命名此抽象路径名表示的文件。
 boolean setLastModified(long time)
          设置由此抽象路径名所指定的文件或目录的最后一次修改时间。
 boolean setReadOnly()
          标记此抽象路径名指定的文件或目录,以便只可对其进行读操作。
 String toString()
          返回此抽象路径名的路径名字符串。
 java.net.URI toURI()
          构造一个表示此抽象路径名的 file: URI。
 java.net.URL toURL()
          将此抽象路径名转换成一个 file: URL。
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

字段详细信息

separatorChar

public static final char separatorChar
与系统有关的默认名称分隔符。此字段被初始化为包含系统属性 file.separator 的值的第一个字符。在 UNIX 系统上,此字段的值为 '/';在 Microsoft Windows 系统上,它为 '\\'

另请参见:
System.getProperty(java.lang.String)

separator

public static final String separator
与系统有关的默认名称分隔符,出于方便考虑,它被表示为一个字符串。此字符串只包含一个字符,即 separatorChar


pathSeparatorChar

public static final char pathSeparatorChar
与系统有关的默认路径分隔符字符。此字段被初始为包含系统属性 path.separator 的值的第一个字符。此字符用于按照路径列表 给出的文件顺序分隔文件名。在 UNIX 系统上,此字段为 ':';在 Microsoft Windows 系统上,它为 ';'

另请参见:
System.getProperty(java.lang.String)

pathSeparator

public static final String pathSeparator
与系统有关的路径分隔符字符,出于方便考虑,它被表示为一个字符串。此字符串只包含一个字符,即 pathSeparatorChar

构造方法详细信息

File

public File(String pathname)
通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例。如果给定字符串是空字符串,则结果是空的抽象路径名。

参数:
pathname - 路径名字符串
抛出:
NullPointerException - 如果 pathname 参数为 null

File

public File(String parent,
            String child)
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。

如果 parentnull,则创建一个新的 File 实例,这与调用单参数 File 方法,以给定 child 路径名字符串作为参数的效果一样。

否则,parent 路径名字符串用于表示目录,而 child 路径名字符串用于表示目录或文件。如果 child 路径名字符串是绝对路径名,则用与系统有关的方式将它转换成一个相对路径名。如果 parent 是空字符串,则新的 File 实例是通过将 child 转换成抽象路径名并根据与系统有关的默认目录来分析结果而创建的。否则,将每个路径名字符串转换成一个抽象路径名,并根据父抽象路径名分析子抽象路径名。

参数:
parent - 父路径名字符串
child - 子路径名字符串
抛出:
NullPointerException - 如果 childnull

File

public File(File parent,
            String child)
根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。

如果 parentnull,则创建一个新的 File 实例,这与调用给定 child 路径名字符串的单参数 File 构造方法的效果一样。

否则,parent 抽象路径名用于表示目录,而 child 路径名字符串用于表示目录或文件。如果 child 路径名字符串是绝对路径名,则用与系统有关的方式将它转换成一个相对路径名。如果 parent 是空抽象路径名,则新的 File 实例是通过将 child 转换成抽象路径名并根据与系统有关的默认目录来分析结果而创建的。否则,将每个路径名字符串转换成一个抽象路径名,并根据父抽象路径名分析子抽象路径名。

参数:
parent - 父抽象路径名
child - 子路径名字符串
抛出:
NullPointerException - 如果 childnull

File

public File(java.net.URI uri)
通过将给定的 file: URI 转换成一个抽象路径名来创建一个新的 File 实例。

file: URI 的具体形式与系统有关,因此,由此构造方法执行的转换也与系统有关。

对于某个给定抽象路径名 f,可以保证:

new File( f.toURI()).equals( f.getAbsoluteFile())
只要原始抽象路径名、URI 和新的抽象路径名都是在同一 Java 虚拟机(或者它的不同调用)中创建的。但是,当在某一操作系统上的虚拟机中创建的 file: URI 在不同操作系统上的虚拟机中被转换成抽象路径名时,这种关系通常是不成立的。

参数:
uri - 一个绝对的分层 URI,由一个等于 "file" 的 scheme、非空的 path 组件,以及未定义的 authority、query 和 fragment 组件组成
抛出:
NullPointerException - 如果 urinull
IllegalArgumentException - 如果参数有关的前提不成立
从以下版本开始:
1.4
另请参见:
toURI(), URI
方法详细信息

getName

public String getName()
返回由此抽象路径名表示的文件或目录的名称。该名称是路径名的名称序列中的最后一个名称。如果路径名的名称序列为空,则返回空字符串。

返回:
此抽象路径名表示的文件或目录的名称,如果路径名的名称序列为空,则返回空字符串

getParent

public String getParent()
返回此抽象路径名的父路径名的路径名字符串,如果此路径名没有指定父目录,则返回 null

抽象路径名的 路径名由路径名的前缀(如果有)以及路径名的名称序列中最后一个名称以外的所有名称组成。如果名称序列为空,那么该路径名没有指定父目录。

返回:
由此抽象路径名指定的父目录的路径名字符串,如果此路径名没有指定父目录,则返回 null

getParentFile

public File getParentFile()
返回此抽象路径名的父路径名的抽象路径名,如果此路径名没有指定父目录,则返回 null

抽象路径名的 路径名由路径名的前缀(如果有)以及路径名的名称序列中最后一个名称以外的所有名称组成。如果名称序列为空,那么该路径名没有指定父目录。

返回:
由此抽象路径名指定的父目录的抽象路径名,如果此路径名没有指定父目录,则返回 null
从以下版本开始:
1.2

getPath

public String getPath()
将此抽象路径名转换为一个路径名字符串。所得到的字符串使用默认名称分隔符来分隔名称序列中的名称。

返回:
此抽象路径名的字符串形式

isAbsolute

public boolean isAbsolute()
测试此抽象路径名是否为绝对路径名。绝对路径名的定义与系统有关。在 UNIX 系统上,如果路径名的前缀是 "/",则该路径名是绝对路径名。在 Microsoft Windows 系统上,如果路径名的前缀是后跟 "\\" 的盘符,或者其前缀是 "\\\\",则该路径名是绝对路径名。

返回:
如果此抽象路径名是绝对路径名,则返回 true;否则返回 false

getAbsolutePath

public String getAbsolutePath()
返回抽象路径名的绝对路径名字符串。

如果此抽象路径名已经是绝对路径名,则返回该路径名字符串,这与 getPath() 方法一样。如果此抽象路径名是空的抽象路径名,则返回当前用户目录的路径名字符串,该目录由系统属性 user.dir 指定。否则,使用与系统有关的方式分析此路径名。在 UNIX 系统上,通过根据当前用户目录分析某一相对路径名,可使该路径名成为绝对路径名。在 Microsoft Windows 系统上,通过由路径名指定的当前驱动器目录(如果有)来分析某一相对路径名,可使该路径名成为绝对路径名;否则,可以根据当前用户目录来分析它。

返回:
绝对路径名字符串,它与此抽象路径名表示相同的文件或目录的
抛出:
SecurityException - 如果无法访问所需的系统属性值。
另请参见:
isAbsolute()

getAbsoluteFile

public File getAbsoluteFile()
返回抽象路径名的绝对路径名形式。等同于 new File(this.getAbsolutePath()())

返回:
表示与此抽象路径名相同的文件或目录的绝对抽象路径名
抛出:
SecurityException - 如果无法访问所需的系统属性值。
从以下版本开始:
1.2

getCanonicalPath

public String getCanonicalPath()
                        throws IOException
返回抽象路径名的规范路径名字符串。

规范路径名是绝对路径名,并且是惟一的。规范路径名的准确定义与系统有关。如有必要,此方法首先将路径名转换成绝对路径名,这与调用 getAbsolutePath() 方法的效果一样,然后用与系统相关的方式将它映射到其惟一路径名。这通常涉及到从路径名中移除多余的名称(比如 ".""..")、分析符号连接(对于 UNIX 平台),以及将驱动器名转换成标准大小写形式(对于 Microsoft Windows 平台)。

表示现有文件或目录的每个路径名都有一个惟一的规范形式。表示非存在文件或目录的每个路径名也有一个惟一的规范形式。非存在文件或目录路径名的规范形式可能不同于创建文件或目录之后同一路径名的规范形式。同样,现有文件或目录路径名的规范形式可能不同于删除文件或目录之后同一路径名的规范形式。

返回:
表示与此抽象路径名相同的文件或目录的规范路径名字符串
抛出:
IOException - 如果发生 I/O 错误(可能是因为构造规范路径名需要进行文件系统查询)
SecurityException - 如果无法访问所需的系统属性值,或者如果存在安全管理器,且其 SecurityManager.checkRead(java.io.FileDescriptor) 方法拒绝对该文件进行读取访问
从以下版本开始:
JDK1.1

getCanonicalFile

public File getCanonicalFile()
                      throws IOException
返回此抽象路径名的规范形式。等同于 new File(this.getCanonicalPath()())

返回:
表示与此抽象路径名相同的文件或目录的规范路径名字符串
抛出:
IOException - 如果发生 I/O 错误(可能是因为构造规范路径名需要进行文件系统查询)
SecurityException - 如果无法访问所需的系统属性值,或者如果存在安全管理器,且其 SecurityManager.checkRead(java.io.FileDescriptor) 方法拒绝对该文件进行读取访问
从以下版本开始:
1.2

toURL

public java.net.URL toURL()
                   throws java.net.MalformedURLException
将此抽象路径名转换成一个 file: URL。该 URL 的具体形式与系统有关。如果可以确定此抽象路径名表示的文件是一个目录,则得到的 URL 将以斜杠结束。

使用注意事项:此方法不会自动避开 URL 中的非法字符。建议新的代码将抽象路径名转换成一个 URL,实现方式是先通过 toURI 方法将抽象路径名转换成 URI,然后通过 URI.toURL 方法将该 URI 转换成 URL。

返回:
表示等效文件 URL 的 URL 对象
抛出:
java.net.MalformedURLException - 如果无法将路径分析为 URL
从以下版本开始:
1.2
另请参见:
toURI(), URI, URI.toURL(), URL

toURI

public java.net.URI toURI()
构造一个表示此抽象路径名的 file: URI。

该 URI 的具体形式与系统有关。如果可以确定此抽象路径名表示的文件是一个目录,则得到的 URI 将以斜杠结束。

对于某个给定抽象路径名 f,可保证:

new File( f.toURI()).equals( f.getAbsoluteFile())
只要原始抽象路径名、URI 和新的抽象路径名都是在同一 Java 虚拟机(或者它的不同调用)中创建的。但是,由于抽象路径名与系统有关的特性,当在某一操作系统上的虚拟机中创建的 file: URI 在不同操作系统上的虚拟机中被转换成抽象路径名时,这种关系通常是不成立的。

返回:
一个绝对的分层 URI,由一个等于 "file" 的 scheme、非空的 path 组件,以及未定义的 authority、query 和 fragment 组件组成
从以下版本开始:
1.4
另请参见:
File(java.net.URI), URI, URI.toURL()

canRead

public boolean canRead()
测试应用程序是否可以读取此抽象路径名表示的文件。

返回:
当且仅当此抽象路径名指定的文件存在 可由应用程序读取时,返回 true;否则返回 false
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对文件进行读取访问

canWrite

public boolean canWrite()
测试应用程序是否可以修改此抽象路径名表示的文件。

返回:
当且仅当文件系统实际包含此抽象路径名表示的文件 允许应用程序对该文件进行写入时,返回 true,否则返回 false
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法拒绝对文件进行写入访问

exists

public boolean exists()
测试此抽象路径名表示的文件或目录是否存在。

返回:
当且仅当此抽象路径名表示的文件或目录存在时,返回 true;否则返回 false
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对文件或目录进行写入访问

isDirectory

public boolean isDirectory()
测试此抽象路径名表示的文件是否是一个目录。

返回:
当且仅当此抽象路径名表示的文件存在 是一个目录时,才返回 true;否则返回 false
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对文件进行读取访问

isFile

public boolean isFile()
测试此抽象路径名表示的文件是否是一个标准文件。如果该文件不是一个目录,此外还满足其他与系统有关的标准,则该文件是标准 文件。由 Java 应用程序创建的非目录文件一定都是标准文件。

返回:
当且仅当此抽象路径名表示的文件存在 是一个标准文件时,返回 true;否则返回 false
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对文件进行读取访问

isHidden

public boolean isHidden()
测试此抽象路径名指定的文件是否是一个隐藏文件。隐藏 的具体定义与系统有关。在 UNIX 系统上,如果文件名以句点字符 ('.') 开头,则认为该文件被隐藏。在 Microsoft Windows 系统上,如果在文件系统中文件被标记为隐藏,则认为该文件被隐藏。

返回:
当且仅当此抽象路径名表示的文件是根据基础平台约定被隐藏时,返回 true
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对文件进行读取访问
从以下版本开始:
1.2

lastModified

public long lastModified()
返回此抽象路径名表示的文件最后一次被修改的时间。

返回:
表示文件最后一次被修改的时间的 long 值,用该时间与历元(1970 年 1 月 1 日,00:00:00 GMT)的时间差来计算此值(以毫秒为单位)。如果该文件不存在,或是发生 I/O 错误,则返回 0L
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对文件进行读取访问

length

public long length()
返回由此抽象路径名表示的文件的长度。如果此路径名表示一个目录,则返回值是不确定的。

返回:
此抽象路径名表示的文件的长度,以字节为单位,如果文件不存在,则返回 0L
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对文件进行读取访问

createNewFile

public boolean createNewFile()
                      throws IOException
当且仅当不存在具有此抽象路径名指定的名称的文件时,原子地创建由此抽象路径名指定的一个新的空文件。检查文件是否存在,如果不存在则创建该文件,这是单个操作,对于其他所有可能影响该文件的文件系统活动来说,该操作是原子的。

注:此方法不应 用于文件锁定,因为所得到的协议可能无法可靠地工作。应该使用 FileLock 机制替代。

返回:
如果指定的文件不存在并成功地创建,则返回 true;如果指定的文件已经存在,则返回 false
抛出:
IOException - 如果发生 I/O 错误
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法拒绝对文件进行写入访问
从以下版本开始:
1.2

delete

public boolean delete()
删除此抽象路径名表示的文件或目录。如果此路径名表示一个目录,则此目录必须为空才能删除。

返回:
当且仅当成功删除文件或目录时,返回 true;否则返回 false
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkDelete(java.lang.String) 方法拒绝对文件进行删除访问

deleteOnExit

public void deleteOnExit()
在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。仅在虚拟机正常终止时,才会试图执行删除操作,这在 Java Language Specification 中已定义。

一旦已经请求执行删除操作,就无法取消该请求。所以应小心使用此方法。

注:此方法不应 用于文件锁定,因为所得到的协议可能无法可靠地工作。应该使用 FileLock 设施替代。

抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkDelete(java.lang.String) 方法拒绝对文件进行删除访问
从以下版本开始:
1.2
另请参见:
delete()

list

public String[] list()
返回由此抽象路径名所表示的目录中的文件和目录的名称所组成字符串数组。

如果此抽象路径名并不表示一个目录,则此方法将返回 null。否则,为目录中的每个文件或目录返回一个字符串数组。表示目录本身及其父目录的名称不包括在结果中。每个字符串是一个文件名,而不是一条完整路径。

不保证所得数组中的相同字符串将以特定顺序出现,特别是不保证它们按字母顺序出现。

返回:
由此抽象路径名所表示的目录中的文件和目录的名称所组成字符串数组。如果目录为空,则数组也将为空。如果抽象路径名不表示一个目录,或者如果发生 I/O 错误,则返回 null
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对目录进行读取访问

list

public String[] list(FilenameFilter filter)
返回由包含在目录中的文件和目录的名称所组成的字符串数组,这一目录是通过满足指定过滤器的抽象路径名来表示的。此方法的行为与 list() 方法相同,除了所返回数组中的字符串必须满足过滤器。如果给定 filternull,则接受所有名称。否则,当且仅当在此抽象路径名和它所表示的目录中的文件名或目录名上调用过滤器的 FilenameFilter.accept(java.io.File, java.lang.String) 方法返回 true 时,该名称才满足过滤器。

参数:
filter - 文件名过滤器
返回:
由此抽象路径名所表示的目录中的文件和目录的字符串数组,该字符串被给定 filter 所接受。如果目录为空,或者没有名称被过滤器接受,则该数组将为空。如果抽象路径名不表示一个目录,或者如果发生 I/O 错误,则返回 null
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对目录进行读取访问

listFiles

public File[] listFiles()
返回一个抽象路径名数组,这些路径名表示此抽象路径名所表示目录中的文件。

如果此抽象路径名并不表示一个目录,则此方法将返回 null。否则,为目录中的每个文件或目录返回一个 File 对象数组。表示目录本身及其父目录的路径名不包括在结果中。得到的每个抽象路径名都是根据此抽象路径名,使用 File(File, String) 构造方法构造。所以,如果此路径名是绝对路径名,则得到的每个路径名都是绝对路径名;如果此路径名是相对路径名,则得到的每个路径名都是相对于同一目录的路径名。

不保证所得数组中的相同字符串将以特定顺序出现,特别是不保证它们按字母顺序出现。

返回:
表示此抽象路径名所表示目录中的文件和目录的抽象路径名数组。如果目录为空,则数组也将为空。如果抽象路径名不表示一个目录,或者如果发生 I/O 错误,则返回 null
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对目录进行读取访问
从以下版本开始:
1.2

listFiles

public File[] listFiles(FilenameFilter filter)
返回表示此抽象路径名所表示目录中的文件和目录的抽象路径名数组,这些路径名满足特定过滤器。此方法的行为与 listFiles() 方法相同,除了所返回数组中的路径名必须满足过滤器。如果给定 filternull,则接受所有路径名。否则,当且仅当在此抽象路径名和它所表示的目录中的文件名或目录名上调用过滤器的 FilenameFilter.accept(java.io.File, java.lang.String) 方法返回 true 时,该路径名才满足过滤器。

参数:
filter - 文件名过滤器
返回:
表示此抽象路径名所表示目录中的文件和目录的抽象路径名数组。如果目录为空,则数组也将为空。如果抽象路径名不表示一个目录,或者如果发生 I/O 错误,则返回 null
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对目录进行读取访问
从以下版本开始:
1.2

listFiles

public File[] listFiles(FileFilter filter)
返回表示此抽象路径名所表示目录中的文件和目录的抽象路径名数组,这些路径名满足特定过滤器。此方法的行为与 listFiles() 方法相同,除了所返回数组中的路径名必须满足过滤器。如果给定 filternull,则接受所有路径名。否则,当且仅当在路径名上调用过滤器的 FileFilter.accept(java.io.File) 方法返回 true 时,该路径名才满足过滤器。

参数:
filter - 文件过滤器
返回:
表示此抽象路径名所表示目录中的文件和目录的抽象路径名数组。如果目录为空,则数组也将为空。如果抽象路径名不表示一个目录,或者如果发生 I/O 错误,则返回 null
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对目录进行读取访问
从以下版本开始:
1.2

mkdir

public boolean mkdir()
创建此抽象路径名指定的目录。

返回:
当且仅当已创建目录时,返回 true;否则返回 false
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法不允许创建指定的目录

mkdirs

public boolean mkdirs()
创建此抽象路径名指定的目录,包括创建必需但不存在的父目录。注意,如果此操作失败,可能已成功创建了一些必需的父目录。

返回:
当且仅当已创建该目录以及所有必需的父目录时,返回 true;否则返回 false
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法不允许验证指定目录和所有必需的父目录是否存在;或者如果 SecurityManager.checkWrite(java.lang.String) 方法不允许创建指定的目录和所有必需的父目录

renameTo

public boolean renameTo(File dest)
重新命名此抽象路径名表示的文件。

此方法行为的许多方面都是与平台有关的:重命名操作无法将一个文件从一个文件系统移动到另一个文件系统,该操作可能不是原子的,如果已经存在具有目标抽象路径名的文件,则该操作可能无法获得成功。应该始终检查返回值,确保重命名操作成功。

参数:
dest - 指定文件的新抽象路径名
返回:
当且仅当重命名成功时,返回 true;否则返回 false
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法拒绝对原来的和新的路径名进行写入访问
NullPointerException - 如果参数 destnull

setLastModified

public boolean setLastModified(long time)
设置由此抽象路径名所指定的文件或目录的最后一次修改时间。

所有平台都支持将文件修改时间设置为最接近的秒数,但一些平台会提供更精确的值。该参数将被截取,以适应受支持的精度。如果设置操作成功,并且没有在文件上发生其他干扰操作,则下一次调用 lastModified() 方法将返回传递给此方法的 time 参数(可能被截取)。

参数:
time - 最后一次修改的时间,用该时间与历元(1970 年 1 月 1 日,00:00:00 GMT)的时间差来计算(以毫秒为单位)
返回:
当且仅当该操作成功时,返回 true;否则返回 false
抛出:
IllegalArgumentException - 如果该参数为负
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法拒绝对指定文件进行写入访问
从以下版本开始:
1.2

setReadOnly

public boolean setReadOnly()
标记此抽象路径名指定的文件或目录,以便只可对其进行读操作。在调用此方法后,可以保证在被删除或被标记为允许写访问之前,文件或目录不会发生更改。是否可以删除某个只读文件或目录则取决于基础系统。

返回:
当且仅当该操作成功时,返回 true;否则返回 false
抛出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法拒绝对指定文件进行写入访问
从以下版本开始:
1.2

listRoots

public static File[] listRoots()
列出可用的文件系统根目录。

特定 Java 平台可以支持零个或更多个按层次组织的文件系统。每个文件系统有一个 root 目录,可以从这到达文件系统中的其他所有文件。例如,Windows 平台为每个活动驱动器提供了一个根目录;UNIX 平台只有一个根目录,即 "/"。可用文件系统根目录的设置受各种系统级操作的影响,比如可移动介质的插入和弹出,以及断开或卸载那些物理磁盘或虚拟磁盘。

此方法返回一个 File 对象数组,这些对象表示可用文件系统根的根目录。可以保证本地机器上物理存在的任何文件的规范路径名都以此方法返回的根目录之一开始。

位于其他一些机器上的文件的规范路径名是通过远程文件系统协议(比如 SMB 或 NFS)访问的,它们可能以此方法返回的根目录之一开始,也可能不是这样。如果远程文件的路径名在语法上无法与本地文件的路径名进行区分,那么它将以此方法返回的根目录之一开始。例如,此方法将返回表示 Windows 平台上映射为网络驱动器的根目录的 File 对象,而包含 UNC 路径名的 File 对象并不是由此方法返回。

与此类中的大多数方法不同,此方法不抛出安全性异常。如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒绝对特定根目录进行读取访问,则该目录不会显示在结果中。

返回:
表示可用的文件系统根目录的 File 对象数组,如果无法确定根目录集,则返回 null。如果没有文件系统根目录,则该数组将为空。
从以下版本开始:
1.2

createTempFile

public static File createTempFile(String prefix,
                                  String suffix,
                                  File directory)
                           throws IOException

在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。如果此方法成功返回,则可以保证:

  1. 由返回的抽象路径名表示的文件在此方法被调用之前不存在,并且
  2. 此方法及其所有变体都不会在再次当前调用虚拟机时返回相同的抽象路径名。
此方法只提供了临时文件的部分功能。要安排自动删除此方法创建的文件,可使用 deleteOnExit() 方法。

prefix 参数至少必须是三个字节长。建议前缀使用一个短的、有意义的字符串,比如 "hjb""mail"suffix 参数可能是 null,在这种情况下,将使用后缀 ".tmp"

要创建新文件,可能首先要调整前缀和后缀,使其满足基础平台的限制。如果前缀太长,则将它截断,但前三个字符将始终保留。如果后缀太长,则将它截断,但如果它以句点字符 ('.') 开始,则该句点以及它后面跟着的三个字符将始终保留。一旦已经进行了这些调整,则将通过连接前缀、五个或更多个内部生成的字符和后缀生成新文件的名称。

如果 directory 参数为 null,则使用与系统有关的默认临时文件目录。默认临时文件目录由系统属性 java.io.tmpdir 指定。在 UNIX 系统上,此属性的默认值通常是 "/tmp""/var/tmp";在 Microsoft Windows 系统上,该值通常是 "C:\\WINNT\\TEMP"。在调用 Java 虚拟机时,可为此系统属性提供不同的值,但如果其他程序更改了此属性,则不保证这会对此方法使用的临时目录产生任何影响。

参数:
prefix - 用于生成文件名的前缀字符串;至少必须是三个字符长
suffix - 用于生成文件名的后缀字符串;可能是 null,在这种情况下,将使用后缀 ".tmp"
directory - 将创建的文件所在的目录,如果使用默认临时文件目录,则该参数为 null
返回:
表示新创建的空文件的抽象路径名
抛出:
IllegalArgumentException - 如果 prefix 参数包含少于三个的字符
IOException - 如果无法创建文件
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法不允许创建文件
从以下版本开始:
1.2

createTempFile

public static File createTempFile(String prefix,
                                  String suffix)
                           throws IOException
在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。调用此方法等同于调用 createTempFile(prefix, suffix, null)

参数:
prefix - 用于生成文件名的前缀字符串;至少必须是三个字符长
suffix - 用于生成文件名的后缀字符串;可能是 null,在这种情况下,将使用后缀 ".tmp"
返回:
表示新创建的空文件的抽象路径名
抛出:
IllegalArgumentException - 如果 prefix 参数包含少于三个的字符
IOException - 如果无法创建文件
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法不允许创建文件
从以下版本开始:
1.2

compareTo

public int compareTo(File pathname)
按字母顺序比较两个抽象路径名。此方法定义的顺序取决于基础系统。在 UNIX 系统上,比较路径名时,字母大小写通常很重要,而在 Microsoft Windows 系统上,这通常不重要。

指定者:
接口 Comparable<File> 中的 compareTo
参数:
pathname - 将与此抽象路径名进行比较的抽象路径名
返回:
如果该参数等于此抽象路径名,则返回零;如果此抽象路径名在字母顺序上小于该参数,则返回小于零的值;如果此抽象路径名在字母顺序上大于该参数,则返回大于零的值
从以下版本开始:
1.2

equals

public boolean equals(Object obj)
测试此抽象路径名与给定对象是否相等。当且仅当该参数不是 null 且是一个表示与此抽象路径名相同的文件或目录的抽象路径名时,才返回 true。两个抽象路径名是否相等取决于基础系统。在 UNIX 系统上,比较路径名时,字母大小写通常很重要,而在 Microsoft Windows 系统上,这通常不重要。

覆盖:
Object 中的 equals
参数:
obj - 要与此抽象路径名进行比较的对象
返回:
当且仅当对象相同时,返回 true;否则返回 false
另请参见:
Object.hashCode(), Hashtable

hashCode

public int hashCode()
计算此抽象路径名的哈希码。因为抽象路径名的等同性与系统有关,所以对其哈希码的计算也与系统有关。在 UNIX 系统上,抽象路径名的哈希码等于其路径名字符串和十进制值 1234321 的哈希码的异或。在 Microsoft Windows 系统上,哈希码等于其转换成小写的路径名字符串和十进制值 1234321 的哈希码的异或

覆盖:
Object 中的 hashCode
返回:
此抽象路径名的哈希码
另请参见:
Object.equals(java.lang.Object), Hashtable

toString

public String toString()
返回此抽象路径名的路径名字符串。该字符串就是 getPath() 方法返回的字符串。

覆盖:
Object 中的 toString
返回:
此抽象路径名的字符串形式

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策