public class File extends Object implements Serializable, Comparable<File>
用户界面和操作系统使用依赖于系统的路径名字符串命名文件和目录。 这个类提供了一个抽象的,独立于系统的层次化路径名的视图。 抽象路径名有两个组件:
"/"
为UNIX根目录,或"\\\\"
的Microsoft Windows UNC路径,并 将路径名字符串转换为抽象路径名或从抽象路径名转换本质上是系统依赖的。 当抽象路径名被转换为路径名字符串时,每个名称与默认分隔符的单个副本与下一个名称分隔开 。 默认名称分隔符由系统属性file.separator
定义,并且可以在此类的公共静态字段
和separator
中使用。 当路径名字符串转换为抽象路径名时,其中的名称可能由默认名称分隔符或由底层系统支持的任何其他名称 - 分隔符分隔。 separatorChar
无论是抽象还是字符串形式,路径名可以是绝对的或相对的 。 绝对路径名是完整的,因为不需要其他信息来定位其表示的文件。 相对路径名必须根据从其他路径名获取的信息进行解释。 默认情况下, java.io
包中的类始终会根据当前用户目录解析相对路径名。 该目录由系统属性user.dir
,通常是调用Java虚拟机的目录。
抽象路径名的父级可以通过调用此类的getParent()
方法获得,并由路径名的前缀和路径名的名称序列中的每个名称组成,除了最后一个。 每个目录的绝对路径名是任何File对象的祖先,绝对抽象路径名以目录的绝对路径名开头。 例如,通过将抽象路径名"/usr"表示的目录是由该路径名"/usr/local/bin"表示的目录的祖先。
前缀概念用于处理UNIX平台上的根目录,并在Microsoft Windows平台上驱动说明符,根目录和UNC路径名,如下所示:
"/"
。 相对路径名没有前缀。 表示根目录的抽象路径名具有前缀"/"
和空名称序列。 ":"
的驱动器号组成,如果路径名是绝对的,则可能后跟"\\"
。 UNC路径名的前缀为"\\\\"
; 主机名和共享名称是名称序列中的前两个名称。 没有指定驱动器的相对路径名没有前缀。 该类的实例可以表示或不表示实际的文件系统对象,例如文件或目录。 如果它表示这样一个对象,那么该对象驻留在一个分区中 。 分区是文件系统的特定于操作系统的存储部分。 单个存储设备(例如物理磁盘驱动器,闪存,CD-ROM)可能包含多个分区。 该对象(如果有的话)将驻留在该路径名的绝对形式的一些祖先的分区named上。
文件系统可以对实际的文件系统对象上的某些操作实施限制,例如读取,写入和执行。 这些限制统称为访问权限 。 文件系统对单个对象可以具有多组访问权限。 例如,一组可能适用于对象的所有者 ,另一组可能适用于所有其他用户。 对象的访问权限可能会导致此类中的某些方法失败。
该实例File
类是不可变的; 也就是说,一旦创建,由File
对象表示的抽象路径名永远不会改变。
java.nio.file
包的互java.nio.file
java.nio.file
包定义了Java虚拟机访问文件,文件属性和文件系统的接口和类。 该API可能用于克服java.io.File
类的许多java.io.File
。 该toPath
方法可以被用于获得Path
使用由A表示的抽象路径File
对象查找文件。 所得到的Path
可以与Files
类一起使用,以提供更有效和更广泛的访问附加文件操作,文件属性和I / O异常,以帮助在文件操作失败时诊断错误。
Modifier and Type | Field and Description |
---|---|
static String |
pathSeparator
与系统相关的路径分隔符字符,为方便起见,表示为字符串。
|
static char |
pathSeparatorChar
与系统相关的路径分隔符。
|
static String |
separator
与系统相关的默认名称 - 分隔符字符,以方便的方式表示为字符串。
|
static char |
separatorChar
与系统相关的默认名称分隔符。
|
Constructor and Description |
---|
File(File parent, String child)
从父抽象路径名和子路径名字符串创建新的
File 实例。
|
File(String pathname)
通过将给定的路径名字符串转换为抽象路径名来创建新的
File 实例。
|
File(String parent, String child)
从父路径名字符串和子路径名字符串创建新的
File 实例。
|
File(URI uri)
通过将给定的
file: URI转换为抽象路径名来创建新的
File实例。
|
Modifier and Type | Method and Description |
---|---|
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()
返回分区未分配的字节数
named此抽象路径名。
|
String |
getName()
返回由此抽象路径名表示的文件或目录的名称。
|
String |
getParent()
返回此抽象路径名的父
null 的路径名字符串,如果此路径名未命名为父目录,则返回null。
|
File |
getParentFile()
返回此抽象路径名的父,或抽象路径名
null 如果此路径名没有指定父目录。
|
String |
getPath()
将此抽象路径名转换为路径名字符串。
|
long |
getTotalSpace()
通过此抽象路径名返回分区
named的大小。
|
long |
getUsableSpace()
返回上的分区提供给该虚拟机的字节数
named此抽象路径名。
|
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)
设置此抽象路径名的所有者或每个人的写入权限。
|
Path |
toPath()
返回从此抽象路径构造的 java.nio.file.Path 对象。
|
String |
toString()
返回此抽象路径名的路径名字符串。
|
URI |
toURI()
构造一个表示此抽象路径名的
file: URI。
|
URL |
toURL()
|
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
是空的抽象路径名,那么新的File
实例是通过将child
转换为抽象路径名并根据系统相关的默认目录解析结果来创建的。 否则,每个路径名字符串将转换为抽象路径名,并且子抽象路径名将针对父对象进行解析。
parent
- 父抽象路径名
child
- 子路径名字符串
NullPointerException
- 如果
child
是
null
public File(URI uri)
file: URI的确切形式是依赖于系统的,因此此构造函数执行的转换也依赖于系统。
对于给定的抽象路径名f,它是保证的
new File( f .只要原始的抽象路径名,URI和新的抽象路径名都在同一个Java虚拟机(可能不同的调用)中创建。 但是,当在一个操作系统上的虚拟机中创建的883992944783 URI在不同的操作系统上的虚拟机中被转换为抽象路径名时,这种关系通常不成立。toURI
()).equals( f .getAbsoluteFile
())
uri
- 绝对的层次化URI,方案等于
"file" ,非空路径组件,以及未定义的权限,查询和片段组件
NullPointerException
- 如果
uri是
null
IllegalArgumentException
- 如果参数的前提条件不成立
toURI()
, URI
public String getName()
public String getParent()
null
的路径名字符串,如果此路径名未命名为父目录,则返回null。
抽象路径名的父项由路径名的前缀(如果有)和路径名的名称序列中的每个名称组成,除了最后一个。 如果名称序列为空,则路径名不会指定父目录。
null
如果此路径名未命名为父
public File getParentFile()
null
抽象路径名,如果此路径名未命名为父目录,则返回null。
抽象路径名的父项由路径名的前缀(如果有)和路径名的名称序列中的每个名称组成,除了最后一个。 如果名称序列为空,则路径名不会指定父目录。
null
如果此路径名未命名为父
public String getPath()
default name-separator character
以名称顺序分隔名称。
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)
方法拒绝对该文件的读取访问
Path.toRealPath(java.nio.file.LinkOption...)
public File getCanonicalFile() throws IOException
new File(this.getCanonicalPath()
)
。
IOException
- 如果发生I / O错误,这是可能的,因为规范路径名的构造可能需要文件系统查询
SecurityException
- 如果无法访问所需的系统属性值,或者存在安全管理员,并且其
SecurityManager.checkRead(java.io.FileDescriptor)
方法拒绝对文件的读取访问
Path.toRealPath(java.nio.file.LinkOption...)
@Deprecated public URL toURL() throws MalformedURLException
file:
URL。
URL的确切形式依赖于系统。
如果可以确定由此抽象路径名表示的文件是目录,则生成的URL将以斜杠结尾。
MalformedURLException
- 如果路径无法解析为URL
toURI()
, URI
, URI.toURL()
, URL
public URI toURI()
URI的确切形式是依赖于系统的。 如果可以确定由此抽象路径名表示的文件是目录,则生成的URI将以斜杠结尾。
对于给定的抽象路径名f ,它是有保证的
new只要原始的抽象路径名,URI和新的抽象路径名都在同一个Java虚拟机(可能不同的调用)中创建。 然而,由于抽象路径名的系统依赖性质,当将一个操作系统上的虚拟机中创建的8839929495048 URI转换为不同操作系统上的虚拟机中的抽象路径名时,此关系通常不成立。File
( f .toURI()).equals( f .getAbsoluteFile
())
请注意,当此抽象路径名表示UNC路径名时,UNC的所有组件(包括服务器名称组件)都将在URI
路径中进行编码。 权限组件未定义,表示为null
。 所述Path
类定义了toUri
方法在所得的授权组成编码的服务器名称URI
。 toPath
方法可用于获取表示此抽象路径名的Path
。
SecurityException
- 如果无法访问所需的系统属性值。
File(java.net.URI)
, URI
, URI.toURL()
public boolean canRead()
true
即使该文件不具有读取权限。
true
当且仅当此抽象路径名指定的文件存在并可由应用程序读取时;
false
否则
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkRead(java.lang.String)
方法拒绝对该文件的读取访问
public boolean canWrite()
true
。
true
当且仅当文件系统实际上包含由该抽象路径名表示的文件并且允许应用程序写入该文件时;
false
否则。
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkWrite(java.lang.String)
方法拒绝对该文件的写访问
public boolean exists()
true
当且仅当存在由此抽象路径名表示的文件或目录时;
false
否则
SecurityException
- 如果安全管理器存在,并且其
SecurityManager.checkRead(java.lang.String)
方法拒绝对文件或目录的读取访问
public boolean isDirectory()
在需要区分I / O异常和文件不是目录的情况下,或同时需要同一文件的几个属性的情况下,可以使用Files.readAttributes
方法。
true
当且仅当该抽象路径名表示的文件存在且为目录时;
false
否则
SecurityException
- 如果安全管理器存在,并且其
SecurityManager.checkRead(java.lang.String)
方法拒绝对该文件的读取访问
public boolean isFile()
在需要区分I / O异常与文件不是正常文件的情况下,或同时需要同一文件的几个属性的情况下,可以使用Files.readAttributes
方法。
true
当且仅当该抽象路径名表示的文件存在且为普通文件时;
false
否则
SecurityException
- 如果安全管理器存在,并且其
SecurityManager.checkRead(java.lang.String)
方法拒绝对该文件的读取访问
public boolean isHidden()
'.'
)开头,则该文件被视为隐藏。
在Microsoft Windows系统上,如果文件在文件系统中被标记为这样,则文件被认为是隐藏的。
true
当且仅当该抽象路径名表示的文件根据底层平台的约定被隐藏时
SecurityException
- 如果安全管理器存在,并且其
SecurityManager.checkRead(java.lang.String)
方法拒绝对文件的读取访问
public long lastModified()
凡需要从那里的情况下区分I / O异常0L
返回,或者在同一时间都需要在同一文件的多个属性,或者在需要的上次访问或创建时间的时间,那么可以使用Files.readAttributes
方法。
long
值表示上次修改文件的时间,以时间为单位(1970年1月1日00:00:00 GMT)测量,或者如果文件不存在
0L
,或者如果发生I / O错误
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkRead(java.lang.String)
方法拒绝对文件的读取访问
public long length()
其中要求区分该情况下的I / O异常0L
其中相同文件的多个属性是必需的,同时被返回,或者,那么Files.readAttributes
可以使用方法。
0L
。
某些操作系统可能会返回0L
用于表示系统依赖实体(如设备或管道)的路径名。
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkRead(java.lang.String)
方法拒绝对文件的读取访问
public boolean createNewFile() throws IOException
注意:此方法不应用于文件锁定,因为生成的协议不能使其可靠地工作。 应该使用FileLock
设施。
true
如果命名文件不存在并被成功创建;
false
如果命名文件已经存在
IOException
- 如果发生I / O错误
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkWrite(java.lang.String)
方法拒绝对该文件的写入访问
public boolean delete()
请注意, Files
类定义了一个delete
方法,当一个文件不能被删除时,它会抛出一个IOException
。 这对于错误报告和诊断文件无法被删除的原因很有用。
true
当且仅当文件或目录被成功删除时;
false
否则
SecurityException
- 如果安全管理器存在,并且其
SecurityManager.checkDelete(java.lang.String)
方法拒绝对该文件的删除访问
public void deleteOnExit()
一旦请求删除,就无法取消请求。 因此,该方法应谨慎使用。
注意:此方法不应用于文件锁定,因为生成的协议不能使其可靠地工作。 应该使用FileLock
设施。
SecurityException
- 如果安全管理器存在,并且其
SecurityManager.checkDelete(java.lang.String)
方法拒绝对该文件的删除访问
delete()
public String[] list()
如果此抽象路径名不表示目录,则此方法返回null
。 否则返回一个字符串数组,一个用于目录中的每个文件或目录。 表示目录本身和目录的父目录的名称不包括在结果中。 每个字符串都是一个文件名,而不是完整的路径。
不保证结果数组中的名称字符串将以任何特定的顺序出现; 他们不是特别保证按字母顺序出现。
请注意, Files
类定义了newDirectoryStream
方法来打开目录并遍历目录中文件的名称。 在使用非常大的目录时,这可能会减少资源,并且在使用远程目录时可能会更加灵活。
null
。
SecurityException
- 如果安全管理器存在,并且其
SecurityManager.checkRead(String)
方法拒绝对目录的读取访问
public String[] list(FilenameFilter filter)
list()
方法的行为相同,只是返回的数组中的字符串必须满足过滤器。
如果给定的filter
是null
那么所有的名字都被接受。
否则,一个名称满足过滤器,当且仅当值true
当结果FilenameFilter.accept(File, String)
滤波器的方法是在此抽象路径名和在于其表示目录中的文件或目录的名称调用。
filter
- 文件名过滤器
filter
接受的文件和filter
。
如果目录为空,或者过滤器没有接受名称,则该数组将为空。
如果此抽象路径名不表示目录,或返回I / O错误,则返回null
。
SecurityException
- 如果安全管理器存在,并且其
SecurityManager.checkRead(String)
方法拒绝对目录的读取访问
Files.newDirectoryStream(Path,String)
public File[] listFiles()
如果此抽象路径名不表示目录,则此方法返回null
。 否则将返回一个File
对象的数组,一个用于目录中的每个文件或目录。 表示目录本身和目录的父目录的路径名不包括在结果中。 每个生成的抽象路径名由使用File(File, String)
构造函数的抽象路径名构造。 因此,如果这个路径名是绝对的,那么每个生成的路径名是绝对的; 如果此路径名是相对的,那么每个生成的路径名将相对于相同的目录。
不保证结果数组中的名称字符串将以任何特定的顺序出现; 他们不是特别保证按字母顺序出现。
请注意, Files
类定义了newDirectoryStream
方法来打开目录并遍历目录中文件的名称。 当使用非常大的目录时,这可能会减少资源。
null
。
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkRead(String)
方法拒绝对目录的读取访问
public File[] listFiles(FilenameFilter filter)
listFiles()
方法的行为相同,只是返回的数组中的路径名必须满足过滤器。
如果给定的filter
是null
那么所有的路径名都被接受。
否则,路径名满足过滤器,当且仅当值true
当结果FilenameFilter.accept(File, String)
滤波器的方法是在此抽象路径名和在于其表示目录中的文件或目录的名称调用。
filter
- 文件名过滤器
null
。
SecurityException
- 如果安全管理器存在,并且其
SecurityManager.checkRead(String)
方法拒绝对目录的读取访问
Files.newDirectoryStream(Path,String)
public File[] listFiles(FileFilter filter)
listFiles()
方法的行为相同,但返回的数组中的路径名必须满足过滤器。
如果给定的filter
是null
那么所有的路径名都被接受。
否则,当且仅当值true
在路径名上调用过滤器的FileFilter.accept(File)
方法时,路径名满足过滤器。
filter
- 文件过滤器
null
。
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkRead(String)
方法拒绝对目录的读取访问
Files.newDirectoryStream(Path,java.nio.file.DirectoryStream.Filter)
public boolean mkdir()
true
当且仅当该目录被创建时;
false
否则
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkWrite(java.lang.String)
方法不允许创建命名目录
public boolean mkdirs()
true
当且仅当该目录已创建,以及所有必需的父目录;
false
否则
SecurityException
- 如果安全管理器存在,并且其SecurityManager.checkRead(java.lang.String)
方法不允许验证命名目录和所有必需的父目录的存在;
或者如果SecurityManager.checkWrite(java.lang.String)
方法不允许创建命名目录和所有必需的父目录
public boolean renameTo(File dest)
该方法的行为的许多方面固有地依赖于平台:重命名操作可能无法将文件从一个文件系统移动到另一个文件系统,它可能不是原子的,如果具有目标抽象路径名的文件可能无法成功已经存在。 应始终检查返回值,以确保重命名操作成功。
dest
- 命名文件的新抽象路径名
true
当且仅当重命名成功;
false
否则
SecurityException
- 如果安全管理器存在,并且其
SecurityManager.checkWrite(java.lang.String)
方法拒绝对旧的或新的路径名的写入访问
NullPointerException
- 如果参数
dest
是
null
public boolean setLastModified(long time)
所有平台都支持文件修改时间到最近的秒数,但有些则提供更高的精度。 参数将被截断以适应支持的精度。 如果操作成功,并且不会对文件进行干预操作,则下一次调用
方法将返回传递给此方法的(可能截断的) lastModified()
time
参数。
time
- 自上个世纪(1970年1月1日00:00:00 GMT)以来,以毫秒计
true
当且仅当操作成功;
false
否则
IllegalArgumentException
- 如果参数为负数
SecurityException
- 如果安全管理器存在,并且其
SecurityManager.checkWrite(java.lang.String)
方法拒绝对命名文件的写入访问
public boolean setReadOnly()
true
当且仅当操作成功时;
false
否则
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkWrite(java.lang.String)
方法拒绝对命名文件的写入访问
public boolean setWritable(boolean writable, boolean ownerOnly)
Files
类定义了对文件属性(包括文件权限)进行操作的方法。 当需要更精细的文件权限操作时,可以使用这种方法。
writable
- 如果true
,设置访问权限允许写操作;
如果false
不允许写操作
ownerOnly
- 如果true
,写权限仅适用于所有者的写许可;
否则适用于所有人。
如果底层文件系统无法区分所有者的写入权限与其他用户的写入权限,那么该权限将适用于所有人,不管该值如何。
true
当且仅当操作成功。
如果用户没有权限更改此抽象路径名的访问权限,操作将失败。
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkWrite(java.lang.String)
方法拒绝对命名文件的写入访问
public boolean setWritable(boolean writable)
调用此方法的形式为file.setWritable(arg)的行为方式与调用完全相同
file.setWritable(arg, true)
writable
- 如果true
,设置访问权限允许写操作;
如果false
不允许写操作
true
当且仅当操作成功。
如果用户没有权限更改此抽象路径名的访问权限,操作将失败。
SecurityException
- 如果安全管理器存在,并且其
SecurityManager.checkWrite(java.lang.String)
方法拒绝对文件的写入访问
public boolean setReadable(boolean readable, boolean ownerOnly)
Files
类定义了对文件属性(包括文件权限)进行操作的方法。 当需要更精细的文件权限操作时,可以使用这种方法。
readable
- 如果true
,设置访问权限允许读操作;
如果false
不允许读操作
ownerOnly
- 如果true
,读权限仅适用于所有者的读权限;
否则适用于所有人。
如果底层文件系统无法区分所有者的读取权限与其他用户的读取权限,则该权限将适用于所有人,不管该值如何。
true
当且仅当操作成功。
如果用户没有权限更改此抽象路径名的访问权限,操作将失败。
如果readable
是false
并且底层文件系统没有实现读取权限,则操作将失败。
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkWrite(java.lang.String)
方法拒绝对文件的写入访问
public boolean setReadable(boolean readable)
调用此方法的形式为file.setReadable(arg)的行为方式与调用完全相同
file.setReadable(arg, true)
readable
- 如果true
,设置访问权限允许读操作;
如果false
不允许读操作
true
当且仅当操作成功。
如果用户没有权限更改此抽象路径名的访问权限,操作将失败。
如果readable
是false
,并且底层文件系统没有实现读取权限,则操作将失败。
SecurityException
- 如果安全管理器存在,并且其
SecurityManager.checkWrite(java.lang.String)
方法拒绝对该文件的写入访问
public boolean setExecutable(boolean executable, boolean ownerOnly)
Files
类定义了对文件属性(包括文件权限)进行操作的方法。 当需要更精细的文件权限操作时,可以使用这种方法。
executable
- 如果true
,设置访问权限允许执行操作;
如果false
不允许执行操作
ownerOnly
- 如果true
,则执行权限仅适用于所有者的执行权限;
否则适用于所有人。
如果底层文件系统无法区分所有者的执行权限与其他人的执行权限,则该权限将适用于所有人,不管该值。
true
当且仅当操作成功。
如果用户没有权限更改此抽象路径名的访问权限,操作将失败。
如果executable
是false
并且底层文件系统没有实现执行权限,那么操作将失败。
SecurityException
- 如果安全管理器存在,并且其
SecurityManager.checkWrite(java.lang.String)
方法拒绝对该文件的写访问
public boolean setExecutable(boolean executable)
调用此方法的形式为file.setExcutable(arg)的行为方式与调用完全相同
file.setExecutable(arg, true)
executable
- 如果true
,设置访问权限允许执行操作;
如果false
不允许执行操作
true
当且仅当操作成功。
如果用户没有权限更改此抽象路径名的访问权限,操作将失败。
如果executable
是false
并且底层文件系统没有实现执行权限,那么操作将失败。
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkWrite(java.lang.String)
方法拒绝对文件的写入访问
public boolean canExecute()
true
即使该文件不具有执行权限。
true
当且仅当存在抽象路径名
并允许应用程序执行该文件时
SecurityException
- 如果安全管理器存在,并且其
SecurityManager.checkExec(java.lang.String)
方法拒绝执行对该文件的访问
public static File[] listRoots()
一个特定的Java平台可以支持零个或多个分层组织的文件系统。 每个文件系统都有一个root
目录,从该目录可以访问该文件系统中的所有其他文件。 例如,Windows平台具有每个活动驱动器的根目录; UNIX平台有一个根目录,即"/"
。 可用文件系统根的集合受到各种系统级操作的影响,例如插入或弹出可移动介质以及断开或卸载物理或虚拟磁盘驱动器。
此方法返回一个File
对象的数组,它们表示可用文件系统根的根目录。 确保本地机器上物理存在的任何文件的规范路径名将以此方法返回的其中一个根源开始。
驻留在某个其他机器上并通过远程文件系统协议(如SMB或NFS)访问的文件的规范路径名可能或可能不以此方法返回的根目录之一开始。 如果远程文件的路径名在语法上与本地文件的路径名无法区分,那么它将以此方法返回的其中一个根开始。 因此,例如, File
对象表示在Windows平台的映射的网络驱动器的根目录下将通过该方法返回,而File
含有UNC路径名的对象将不通过该方法来返回。
与此类中的大多数方法不同,此方法不会抛出安全异常。 如果安全管理器存在,并且其SecurityManager.checkRead(String)
方法拒绝对特定根目录的读取访问,则该目录将不会显示在结果中。
File
对象表示可用的文件系统根,或null
如果无法确定根组。
如果没有文件系统根,数组将为空。
FileStore
public long getTotalSpace()
SecurityException
- 如果安全管理器已经安装,否认RuntimePermission
("getFileSystemAttributes")或其SecurityManager.checkRead(String)
方法拒绝对此抽象路径名命名的文件的读访问权限
public long getFreeSpace()
返回的未分配字节数是一个提示,但不是保证,可以使用大多数或任何这些字节。 在此呼叫之后,未分配字节的数量很可能是准确的。 任何外部I / O操作(包括在该虚拟机之外的系统上进行的操作)都可能导致不准确。 此方法不保证对该文件系统的写入操作将成功。
getTotalSpace()
返回的总文件系统大小。
SecurityException
- 如果已安装安全管理器,并且拒绝RuntimePermission
("getFileSystemAttributes")或其SecurityManager.checkRead(String)
方法拒绝对此抽象路径名命名的文件的读取访问权限
public long getUsableSpace()
getFreeSpace()
实际写入多少新数据的更准确的估计。
返回的可用字节数是一个提示,但不是保证,可以使用大多数或任何这些字节。 在此呼叫之后,未分配字节的数量很可能是准确的。 任何外部I / O操作(包括在该虚拟机之外的系统上进行的操作)都可能导致不准确。 此方法不保证对该文件系统的写入操作将成功。
getFreeSpace()
。
SecurityException
- 如果安全管理器已安装,并且拒绝RuntimePermission
("getFileSystemAttributes")或其SecurityManager.checkRead(String)
方法拒绝对此抽象路径名命名的文件的读访问权限
public static File createTempFile(String prefix, String suffix, File directory) throws IOException
在指定的目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。 如果此方法成功返回,则可以保证:
deleteOnExit()
方法。
prefix
参数必须至少有三个字符长。 建议前缀为短的有意义的字符串,如"hjb"
或"mail"
。 suffix
参数可以是null
,在这种情况下将使用后缀".tmp"
。
要创建新文件,可以首先调整前缀和后缀以适应底层平台的限制。 如果前缀太长,那么它将被截断,但它的前三个字符将始终保留。 如果后缀太长,那么它也将被截断,但是如果以句点字符( '.'
)开头,那么它的周期和前三个字符将始终保留。 一旦进行了这些调整,将通过连接前缀,五个或更多内部生成的字符和后缀来生成新文件的名称。
如果directory
参数是null
那么将使用系统相关的默认临时文件目录。 默认临时文件目录由系统属性java.io.tmpdir
。 在UNIX系统上,此属性的默认值通常为"/tmp"
或"/var/tmp"
; 在Microsoft Windows系统上,通常是"C:\\WINNT\\TEMP"
。 当Java虚拟机被调用时,可以向该系统属性赋予不同的值,但不能保证对此属性的编程更改对此方法使用的临时目录有任何影响。
prefix
- 用于生成文件名的前缀字符串;
长度必须至少为3个字符
suffix
- 用于生成文件名的后缀字符串;
可能是null
,在这种情况下将使用后缀".tmp"
directory
-其中文件是要创建的目录,或
null
如果默认临时文件目录将被使用
IllegalArgumentException
- 如果
prefix
参数包含少于三个字符
IOException
- 如果无法创建文件
SecurityException
- 如果安全管理器存在,并且其
SecurityManager.checkWrite(java.lang.String)
方法不允许创建文件
public static File createTempFile(String prefix, String suffix) throws IOException
createTempFile(prefix, suffix, null)
。
Files.createTempFile
方法提供了在临时文件目录中创建空文件的替代方法。 由该方法创建的文件可能对由此方法创建的文件具有更多的限制性访问权限,因此可能更适合对安全敏感的应用程序。
prefix
- 用于生成文件名的前缀字符串;
长度必须至少为3个字符
suffix
- 用于生成文件名称的后缀字符串;
可以是null
,在这种情况下将使用后缀".tmp"
IllegalArgumentException
- 如果
prefix
参数包含少于三个字符
IOException
- 如果无法创建文件
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkWrite(java.lang.String)
方法不允许创建文件
Files.createTempDirectory(String,FileAttribute[])
public int compareTo(File pathname)
compareTo
在界面
Comparable<File>
pathname
- 要与此抽象路径名进行比较的抽象路径名
public boolean equals(Object obj)
true
当且仅当参数不是null
,并且是一个抽象路径名,表示与此抽象路径名相同的文件或目录。
两个抽象的路径名是否相等取决于底层系统。
在UNIX系统上,字母大小写在比较路径名中是重要的;
在Microsoft Windows系统上它不是。
equals
在
Object
obj
- 要与此抽象路径名进行比较的对象
true
当且仅当对象相同时;
false
否则
Object.hashCode()
, HashMap
public int hashCode()
1234321
。
在Microsoft Windows系统上,哈希码等于其转义为小写的路径名字符串的排他或哈希码,小数值1234321
。
在缩小路径名字符串时,不考虑区域设置。
hashCode
在
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public Path toPath()
java.nio.file.Path
对象。
Path
的Path与default-filesystem
有关 。
该方法的第一次调用的工作原理就像调用它相当于评估表达式:
此方法的FileSystems.getDefault
().getPath
(this.getPath
());
Path
调用返回相同的Path
。
如果此抽象路径Path
空抽象路径名,则此方法返回可用于访问当前用户目录的Path。
Path
Path
InvalidPathException
- 如果无法从抽象路径
Path
对象(参见
FileSystem.getPath
)
Path.toFile()