java.lang.Objectjava.io.File
public class File
文件和目录路径名的抽象表示形式。
用户界面和操作系统使用与系统相关的路径名字符串 来命名文件和目录。此类呈现分层路径名的一个抽象的、与系统无关的视图。抽象路径名 有两个组件:
"/"
表示 UNIX 中的根目录,"\\\\"
表示 Microsoft Windows UNC 路径名。 路径名字符串与抽象路径名之间的转换与系统有关。将抽象路径名转换为路径名字符串时,每个名称与下一个名称之间用一个默认分隔符 隔开。默认名称分隔符由系统属性 file.separator
定义,可通过此类的公共静态字段
和 separator
使其可用。将路径名字符串转换为抽象路径名时,可以使用默认名称分隔符或者底层系统支持的任何其他名称分隔符来分隔其中的名称。 separatorChar
无论是抽象路径名还是路径名字符串,都可以是绝对 路径名或相对 路径名。绝对路径名是完整的路径名,不需要任何其他信息就可以定位它所表示的文件。相反,相对路径名必须使用取自其他路径名的信息进行解释。默认情况下,java.io
包中的类总是根据当前用户目录来解析相对路径名。此目录由系统属性 user.dir
指定,通常是 Java 虚拟机的调用目录。
调用此类的 getParent()
方法可以获取抽象路径名的父 路径名,它由路径名前缀以及路径名名称序列中的每个名称(最后一个除外)组成。对于任何具有绝对抽象路径名的 File 对象,如果其绝对抽象路径名以某个目录的绝对路径名开头,那么该目录的绝对路径名是该 File 对象的祖先。例如,抽象路径名 "/usr" 表示的目录是路径名 "/usr/local/bin" 所表示目录的一个祖先。
在处理 UNIX 平台的根目录,以及 Microsoft Windows 平台的盘符、根目录和 UNC 路径名时,将用到前缀这一概念。如下所示:
"/"
。相对路径名没有前缀。表示根目录的绝对路径名的前缀为 "/"
且名称序列为空。 ":"
组成。如果路径名是绝对路径名,还可能后跟 "\\"
。UNC 路径名的前缀是 "\\\\"
;主机名和共享名是名称序列中的前两个名称。没有指定驱动器的相对路径名没有前缀。 此类的实例可能表示(也可能不表示)实际文件系统对象,如文件或目录。如果它表示这种对象,那么该对象驻留在一个分区 中。分区是文件系统特定于操作系统的存储分区。一个存储设备(例如,物理磁盘驱动器、闪存、CD-ROM)可以包含多个分区。对象(如果有)将驻留在此路径名(绝对形式)某个祖先指定的分区上。
文件系统可以实现对实际文件系统对象上的某些操作(比如,读、写、执行)进行限制。这些限制统称为访问权限。文件系统可以对一个对象设置多个访问权限。例如,一个设置可能适用于对象的所有者,另一个设置则可能适用于所有其他用户。对象上的访问权限可能导致此类的某些方法执行失败。
File
类的实例是不可变的;也就是说,一旦创建,File
对象表示的抽象路径名将永不改变。
字段摘要 | |
---|---|
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(URI uri) 通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。 |
方法摘要 | |
---|---|
boolean |
canExecute() 测试应用程序是否可以执行此抽象路径名表示的文件。 |
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() 返回此抽象路径名的规范路径名字符串。 |
long |
getFreeSpace() 返回此抽象路径名指定的分区中未分配的字节数。 |
String |
getName() 返回由此抽象路径名表示的文件或目录的名称。 |
String |
getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null 。 |
File |
getParentFile() 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null 。 |
String |
getPath() 将此抽象路径名转换为一个路径名字符串。 |
long |
getTotalSpace() 返回此抽象路径名指定的分区大小。 |
long |
getUsableSpace() 返回此抽象路径名指定的分区上可用于此虚拟机的字节数。 |
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 |
setExecutable(boolean executable) 设置此抽象路径名所有者执行权限的一个便捷方法。 |
boolean |
setExecutable(boolean executable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的执行权限。 |
boolean |
setLastModified(long time) 设置此抽象路径名指定的文件或目录的最后一次修改时间。 |
boolean |
setReadable(boolean readable) 设置此抽象路径名所有者读权限的一个便捷方法。 |
boolean |
setReadable(boolean readable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的读权限。 |
boolean |
setReadOnly() 标记此抽象路径名指定的文件或目录,从而只能对其进行读操作。 |
boolean |
setWritable(boolean writable) 设置此抽象路径名所有者写权限的一个便捷方法。 |
boolean |
setWritable(boolean writable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的写权限。 |
String |
toString() 返回此抽象路径名的路径名字符串。 |
URI |
toURI() 构造一个表示此抽象路径名的 file: URI。 |
URL |
toURL() 已过时。 此方法不会自动转义 URL 中的非法字符。建议新的代码使用以下方式将抽象路径名转换为 URL:首先通过 toURI 方法将其转换为 URI,然后通过 URI.toURL 方法将 URI 装换为 URL。 |
从类 java.lang.Object 继承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
字段详细信息 |
---|
public static final char separatorChar
file.separator
值的第一个字符。在 UNIX 系统上,此字段的值为
'/'
;在 Microsoft Windows 系统上,它为
'\\'
。
public static final String separator
separatorChar
。
public static final char pathSeparatorChar
path.separator
值的第一个字符。此字符用于分隔以
路径列表 形式给定的文件序列中的文件名。在 UNIX 系统上,此字段为
':'
;在 Microsoft Windows 系统上,它为
';'
。
public static final String pathSeparator
pathSeparatorChar
。
构造方法详细信息 |
---|
public File(String pathname)
File
实例。如果给定字符串是空字符串,那么结果是空抽象路径名。
pathname
- 路径名字符串
NullPointerException
- 如果
pathname
参数为
null
public File(String parent, String child)
File
实例。
如果 parent
为 null
,则创建一个新的 File
实例,这与调用以给定 child
路径名字符串作为参数的单参数 File
构造方法效果一样。
否则,parent
路径名字符串用于表示目录,child
路径名字符串用于表示目录或文件。如果 child
路径名字符串是绝对路径名,则用与系统有关的方式将它转换为一个相对路径名。如果 parent
是空字符串,则通过将 child
转换为抽象路径名,并根据与系统有关的默认目录解析结果来创建新的 File
实例。否则,将每个路径名字符串转换为一个抽象路径名,并根据父抽象路径名解析子抽象路径名。
parent
- 父路径名字符串
child
- 子路径名字符串
NullPointerException
- 如果
child
为
null
public File(File parent, String child)
File
实例。
如果 parent
为 null
,则创建一个新的 File
实例,这与调用给定 child
路径名字符串的单参数 File
构造方法的效果一样。
否则,parent
抽象路径名用于表示目录,child
路径名字符串用于表示目录或文件。如果 child
路径名字符串是绝对路径名,则用与系统有关的方式将它转换为一个相对路径名。如果 parent
是空抽象路径名,则通过将 child
转换为抽象路径名,并根据与系统有关的默认目录解析结果来创建新的 File
实例。否则,将每个路径名字符串转换为一个抽象路径名,并根据父抽象路径名解析子抽象路径名。
parent
- 父抽象路径名
child
- 子路径名字符串
NullPointerException
- 如果
child
为
null
public File(URI uri)
file: URI 的具体形式与系统有关,因此,由此构造方法执行的转换也与系统有关。
对于某个给定抽象路径名 f,可以保证:
new File( f .只要原始抽象路径名、URI 和新抽象路径名都是在同一 Java 虚拟机(或者它的不同调用)中创建的。但是,当在某一操作系统上的虚拟机中创建的 file: URI 在不同操作系统上的虚拟机中被转换为抽象路径名时,这种关系通常是不成立的。toURI
()).equals( f .getAbsoluteFile
())
uri
- 一个绝对分层 URI,由一个等于
"file" 的 scheme、非空的 path 组件,以及未定义的 authority、query 和 fragment 组件组成
NullPointerException
- 如果
uri 为
null
IllegalArgumentException
- 如果关于参数的前提不成立
toURI()
,
URI
方法详细信息 |
---|
public String getName()
public String getParent()
null
。
抽象路径名的父 路径名由路径名的前缀(如果有),以及路径名名称序列中最后一个名称以外的所有名称组成。如果名称序列为空,那么该路径名没有指定父目录。
null
public File getParentFile()
null
。
抽象路径名的父 路径名由路径名的前缀(如果有),以及路径名名称序列中最后一个名称以外的所有名称组成。如果名称序列为空,那么该路径名没有指定父目录。
null
public String getPath()
默认名称分隔符
分隔名称序列中的名称。
public boolean isAbsolute()
"/"
,那么该路径名是绝对路径名。在 Microsoft Windows 系统上,如果路径名的前缀是后跟
"\\"
的盘符,或者是
"\\\\"
,那么该路径名是绝对路径名。
true
;否则返回
false
public String getAbsolutePath()
如果此抽象路径名已经是绝对路径名,则返回该路径名字符串,这与
方法一样。如果此抽象路径名是空抽象路径名,则返回当前用户目录的路径名字符串,该目录由系统属性 getPath()
user.dir
指定。否则,使用与系统有关的方式解析此路径名。在 UNIX 系统上,根据当前用户目录解析相对路径名,可使该路径名成为绝对路径名。在 Microsoft Windows 系统上,根据路径名指定的当前驱动器目录(如果有)解析相对路径名,可使该路径名成为绝对路径名;否则,可以根据当前用户目录解析它。
SecurityException
- 如果无法访问所需的系统属性值。
isAbsolute()
public File getAbsoluteFile()
new File(this.getAbsolutePath()
)
。
SecurityException
- 如果无法访问所需的系统属性值。
public String getCanonicalPath() throws IOException
规范路径名是绝对路径名,并且是惟一的。规范路径名的准确定义与系统有关。如有必要,此方法首先将路径名转换为绝对路径名,这与调用 getAbsolutePath()
方法的效果一样,然后用与系统相关的方式将它映射到其惟一路径名。这通常涉及到从路径名中移除多余的名称(比如 "." 和 "..")、解析符号连接(对于 UNIX 平台),以及将驱动器号转换为标准大小写形式(对于 Microsoft Windows 平台)。
每个表示现存文件或目录的路径名都有一个惟一的规范形式。每个表示不存在文件或目录的路径名也有一个惟一的规范形式。不存在文件或目录路径名的规范形式可能不同于创建文件或目录之后同一路径名的规范形式。同样,现存文件或目录路径名的规范形式可能不同于删除文件或目录之后同一路径名的规范形式。
IOException
- 如果发生 I/O 错误(可能是因为构造规范路径名需要进行文件系统查询)
SecurityException
- 如果无法访问所需的系统属性值,或者存在安全管理器,且其
SecurityManager.checkRead(java.io.FileDescriptor)
方法拒绝对文件进行读访问
public File getCanonicalFile() throws IOException
new File(this.getCanonicalPath()
)
。
IOException
- 如果发生 I/O 错误(可能是因为构造规范路径名需要进行文件系统查询)
SecurityException
- 如果无法访问所需的系统属性值,或者存在安全管理器,且其
SecurityManager.checkRead(java.io.FileDescriptor)
方法拒绝对文件进行读访问
@Deprecated public URL toURL() throws MalformedURLException
toURI
方法将其转换为 URI,然后通过 URI.toURL
方法将 URI 装换为 URL。
file:
URL。该 URL 的具体形式与系统有关。如果可以确定此抽象路径名表示的文件是一个目录,那么所得 URL 将以斜杠结束。
MalformedURLException
- 如果无法将路径解析为 URL
toURI()
,
URI
,
URI.toURL()
,
URL
public URI toURI()
该 URI 的具体形式与系统有关。如果可以确定此抽象路径名表示的文件是一个目录,那么所得 URI 将以斜杠结束。
对于某个给定抽象路径名 f,可保证:
new只要原始抽象路径名、URI 和新抽象路径名都是在同一 Java 虚拟机(或者它的不同调用)中创建的。但是,由于抽象路径名与系统有关的特性,当在某一操作系统上的虚拟机中创建的 file: URI 在不同操作系统上的虚拟机中被转换为抽象路径名时,这种关系通常是不成立的。File
( f .toURI()).equals( f .getAbsoluteFile
())
SecurityException
- 如果不能访问请求的系统属性值。
File(java.net.URI)
,
URI
,
URI.toURL()
public boolean canRead()
true
;否则返回
false
SecurityException
- 如果存在安全管理器,且其
SecurityManager.checkRead(java.lang.String)
方法拒绝对文件进行读访问
public boolean canWrite()
true
;否则返回
false
。
SecurityException
- 如果存在安全管理器,且其
SecurityManager.checkWrite(java.lang.String)
方法拒绝对文件进行写访问
public boolean exists()
true
;否则返回
false
SecurityException
- 如果存在安全管理器,且其
SecurityManager.checkRead(java.lang.String)
方法拒绝对文件或目录进行写访问
public boolean isDirectory()
true
;否则返回
false
SecurityException
- 如果存在安全管理器,且其
SecurityManager.checkRead(java.lang.String)
方法拒绝对文件进行读访问
public boolean isFile()
true
;否则返回
false
SecurityException
- 如果存在安全管理器,且其
SecurityManager.checkRead(java.lang.String)
方法拒绝对文件进行读访问
public boolean isHidden()
'.'
) 开头,则认为该文件被隐藏。在 Microsoft Windows 系统上,如果在文件系统中文件被标记为隐藏,则认为该文件被隐藏。
true
<