java.io
类 File
java.io.File
- 所有已实现的接口:
- Serializable, Comparable<File>
public class Fileextends Objectimplements Serializable, Comparable<File>
文件和目录路径名的抽象表示形式。
用户界面和操作系统使用与系统相关的路径名字符串 来命名文件和目录。此类呈现分层路径名的一个抽象的、与系统无关的视图。抽象路径名 有两个组件:
- 一个可选的与系统有关的前缀 字符串,比如盘符,
"/"
表示 UNIX 中的根目录,"\\\\"
表示 Microsoft Windows UNC 路径名。 - 零个或更多字符串名称 的序列。
抽象路径名中的第一个名称是目录名,对于 Microsoft Windows UNC 路径名则是主机名。抽象路径名中第一个名称之后的每个名称表示一个目录;最后一个名称既可以表示目录,也可以表示文件。空 抽象路径名没有前缀和名称序列。
路径名字符串与抽象路径名之间的转换与系统有关。将抽象路径名转换为路径名字符串时,每个名称与下一个名称之间用一个默认分隔符 隔开。默认名称分隔符由系统属性 file.separator
定义,可通过此类的公共静态字段 separator
和 separatorChar
使其可用。将路径名字符串转换为抽象路径名时,可以使用默认名称分隔符或者底层系统支持的任何其他名称分隔符来分隔其中的名称。
无论是抽象路径名还是路径名字符串,都可以是绝对 路径名或相对 路径名。绝对路径名是完整的路径名,不需要任何其他信息就可以定位它所表示的文件。相反,相对路径名必须使用取自其他路径名的信息进行解释。默认情况下,java.io
包中的类总是根据当前用户目录来解析相对路径名。此目录由系统属性 user.dir
指定,通常是 Java 虚拟机的调用目录。
调用此类的 getParent()
方法可以获取抽象路径名的父 路径名,它由路径名前缀以及路径名名称序列中的每个名称(最后一个除外)组成。对于任何具有绝对抽象路径名的 File 对象,如果其绝对抽象路径名以某个目录的绝对路径名开头,那么该目录的绝对路径名是该 File 对象的祖先。例如,抽象路径名 "/usr" 表示的目录是路径名 "/usr/local/bin" 所表示目录的一个祖先。
在处理 UNIX 平台的根目录,以及 Microsoft Windows 平台的盘符、根目录和 UNC 路径名时,将用到前缀这一概念。如下所示:
- 对于 UNIX 平台,绝对路径名的前缀始终是
"/"
。相对路径名没有前缀。表示根目录的绝对路径名的前缀为"/"
且名称序列为空。 - 对于 Microsoft Windows 平台,包含盘符的路径名前缀由驱动器号和一个
":"
组成。如果路径名是绝对路径名,还可能后跟"\\"
。UNC 路径名的前缀是"\\\\"
;主机名和共享名是名称序列中的前两个名称。没有指定驱动器的相对路径名没有前缀。
此类的实例可能表示(也可能不表示)实际文件系统对象,如文件或目录。如果它表示这种对象,那么该对象驻留在一个分区 中。分区是文件系统特定于操作系统的存储分区。一个存储设备(例如,物理磁盘驱动器、闪存、CD-ROM)可以包含多个分区。对象(如果有)将驻留在此路径名(绝对形式)某个祖先指定的分区上。
文件系统可以实现对实际文件系统对象上的某些操作(比如,读、写、执行)进行限制。这些限制统称为访问权限。文件系统可以对一个对象设置多个访问权限。例如,一个设置可能适用于对象的所有者,另一个设置则可能适用于所有其他用户。对象上的访问权限可能导致此类的某些方法执行失败。
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(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。 |
创建一个文件
import java.io.File; import java.io.IOException; public class FileDemo2 { public static void main(String[] args) throws IOException{ //将传入的路径标记为了一个file对象 File file = new File("E:\\test"); //创建file对象指定的文件 boolean b2 = file.createNewFile(); System.out.println(b2); } }
运行结果:
true
E 盘里面出现了新的文件夹
注意:
1、创建文件的时候需要调用方法:createNewFile()
2、File file = new File("E:\\test");
先把路径传给 file 对象,然后createNewFile()这个方法开始根据传过来的路径检测是否在此路径下有对应的文件,
如果有,则创建失败,返回flase,如果没有,则创建指定的文件,并返回true。
3、只能创建文件不能创建目录
删除一个文件
import java.io.File; import java.io.IOException; public class FileDemo2 { public static void main(String[] args) throws IOException{ //将传入的路径标记为了一个file对象 File file = new File("E:\\test"); //删除文件file对象对应的文件 boolean b1 = file.delete(); System.out.println(b1); } }
运行结果:
true
此时,file 对象指向的文件被删除。
注意:
1、删除文件或者目录的过程是不可逆的
2、删除目录时,要求目录必须是空目录
创建一层目录
import java.io.File; import java.io.IOException; public class FileDemo2 { public static void main(String[] args) throws IOException{ //将传入的路径标记为了一个file对象 File file = new File("E:\\test"); //创建一层目录 boolean b = file.mkdir(); System.out.println(b); } }
运行结果:
注意:
1、当且仅当这个目录不存在的时候才会创建
2、只能创建一层目录
创建多层目录
import java.io.File; import java.io.IOException; public class FileDemo2 { public static void main(String[] args) throws IOException{ //将传入的路径标记为了一个file对象 File file = new File("E:\\test\\cjj\\lnn"); //创建多层目录 boolean b = file.mkdirs(); System.out.println(b); } }
运行结果: