File¶
File是java.io中唯一一个和文件本身有关的操作类。
1.定义¶
public class File
extends Object
implements Serializable, Comparable<File>
2.构造¶
| 构造函数 | 描述 |
|---|---|
File(File parent, String child) |
File从父抽象路径名和子路径名字符串创建新实例。 |
File(String pathname) |
设置要操作文件的完整目录 |
File(String parent, String child) |
设置要操作文件的父目录和子目录 |
File(URI uri) |
File通过将给定的file:URI转换为抽象路径名来创建新实例 。 |
3.方法¶
| 修饰符和类型 | 方法 | 描述 |
|---|---|---|
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) |
返回一个抽象路径名数组,表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 |
staticFile[] |
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() |
**已过时。**此方法不会自动转义URL中非法的字符。 |
4.操作¶

各个系统的分隔符
- Windows系统路径分隔符
\- Unix 类系统(Unix、Linux、MacOS、AIX)路径分隔符
/File.separator 表示系统中的文件路径分隔符 , 使用此变量可以根据系统的不同自动转换文件分隔符
正确的路径编写
java File file = new File("c:" + File.separator + "demo.txt");
1. 创建与删除¶
| 方法 | 描述 |
|---|---|
boolean createNewFile() |
创建。 |
boolean exists() |
判断是否存在。 |
boolean delete() |
删除。 |
File file = new File("c:" + File.separator + "demo.txt");
if (!file.exists()){
file.createNewFile();
}
对于性能的优化 , 不能每次进来都判断文件是否存在 , 可以利用静态代码块的特性( 只执行一次 )的特性:
private File file = new File("c:" + File.separator + "demo.txt");
static{
if (!file.exists()) file.createNewFile();
}
2.获取文件信息¶
| 方法 | 描述 |
|---|---|
| public boolean canExecute() | 是否能执行 |
| public boolean canRead() | 判断是否存在。 |
| public boolean canWrite() | 是否能写 |
| public File getAbsoluteFile() | 获取文件绝对路径实例 |
| public String getName() | 获取文件或目录名称 |
| public boolean isDirectory() | 当前路径是否为目录 |
| public boolean isFile() | 当前路径是否为文件 |
| public long lastModified() | 获取最后一次的修改时间(毫秒) |
| public long length() | 获取文件的长度(b) |
3.获取文件目录信息¶
¶
| 方法 | 描述 |
|---|---|
| public String[] list() | 描述的是子路径的信息 |
| public boolean canRead() | 列出所有的路径信息 |
list() 列出了当前路径下的所有的子路径信息 , 子路径可能是一个目录 也可能是一个 文件 , 不存在父路径
4.文件更名¶
| 方法 | 描述 |
|---|---|
| public boolean renameTo(File dest) | 重命名 dest 表示新名称 |
File file = new File("c:" + File.separator + "demo.txt");
if (file.exists()){
File file1 = new File("c:" + File.separator + "hello.txt");
file.renameTo(file1);
}else {
file.createNewFile();
}