java.lang.Object
java.io.File
Java文件类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。
字段名
static String pathSeparator
与系统相关的路径分隔符字符,为方便起见,表示为字符串。
static char pathSeparatorChar
与系统相关的路径分隔符。
static String separator
与系统相关的默认名称 - 分隔符字符,以方便的方式表示为字符串。
static char separatorChar
与系统相关的默认名称分隔符。
构造方法
File(File parent, String child)
从父抽象路径名和子路径名字符串创建新的 File实例。
File(String pathname)
通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
File(String parent, String child)
从父路径名字符串和子路径名字符串创建新的 File实例。
File(URI uri)
通过将给定的 file: URI转换为抽象路径名来创建新的 File实例。
创建文件对象:
1.根据绝对路径创建文件对象
File file = new File("C:\\Users\\27266\\Desktop\\test.txt");
当执行这句话后在内存的栈空间存在一个 file 的应用,在堆空间里存在一个 test.txt 对象。注意
这个对象只含有文件的属性(如大小,是否可读,修改时间等),不包含文件的内容,所以length=0。
file.createNewFile();
执行命令时,虚拟机会将抽象路径转化为实际的物理路径,到这个转化后的物理路径(此时
是硬盘)下进行文件的创建。没有相对应的文件夹会报错,有的话,就在该目录下创建 test.txt 文件了。
2.根据相对路径创建文件对象
File file = new File("test2.txt");
file.createNewFile();
常用方法
public String getName() | 返回由此抽象路径名表示的文件或目录的名称。 |
public String getParent() | 返回此抽象路径名的父路径名的路径名字符串,如果此路径名没有指定父目录,则返回 null。 |
public File getParentFile() | 返回此抽象路径名的父路径名的抽象路径名,如果此路径名没有指定父目录,则返回 null。 |
public String getPath() | 将此抽象路径名转换为一个路径名字符串。 |
public boolean isAbsolute() | 测试此抽象路径名是否为绝对路径名。 |
public String getAbsolutePath() | 返回抽象路径名的绝对路径名字符串。 |
public boolean canRead() | 测试应用程序是否可以读取此抽象路径名表示的文件。 |
public boolean canWrite() | 测试应用程序是否可以修改此抽象路径名表示的文件。 |
public boolean exists() | 测试此抽象路径名表示的文件或目录是否存在。 |
public boolean isDirectory() | 测试此抽象路径名表示的文件是否是一个目录。 |
public boolean isFile() | 测试此抽象路径名表示的文件是否是一个标准文件。 |
public long lastModified() | 返回此抽象路径名表示的文件最后一次被修改的时间 |
public long length() | 返回由此抽象路径名表示的文件的长度 |
public boolean mkdir() | 创建此抽象路径名指定的目录。 |
public boolean mkdirs() | 创建此抽象路径名指定的目录,包括创建必需但不存在的父目录。 |
public boolean delete() | 删除此抽象路径名表示的文件或目录。 |
public String[] list() | 返回由此抽象路径名所表示的目录中的文件和目录的名称所组成字符串数组。 |
public File[] listFiles() | 返回一个抽象路径名数组,这些路径名表示此抽象路径名所表示目录中的文件。 |
public boolean renameTo(File dest) | 重新命名此抽象路径名表示的文件。 |
public boolean setReadOnly() | 标记此抽象路径名指定的文件或目录,以便只可对其进行读操作。 |
public int compareTo | 比较对象 或 路径名 |
public String toString() | 返回此抽象路径名的路径名字符串。 |
public boolean equals(Object obj) | 测试此抽象路径名与给定对象是否相等 |
举个例子
package io;
import java.io.File;
import java.io.IOException;
import java.sql.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class Test01 {
public static void main(String[] args) throws IOException {
System.out.println("路径分隔符:"+File.pathSeparator);
System.out.println("路径分隔符:"+File.pathSeparatorChar);
System.out.println("路径分隔符:"+File.separator);
System.out.println("路径分隔符:"+File.separatorChar);
//根据绝对路径创建文件对象
File file01 = new File("C:\\Users\\27266\\Desktop\\Test1.txt");
file01.createNewFile();
System.out.println("判断文件或目录是否存在:"+file01.exists());
//根据相对路径创建文件对象,项目名
File file02 = new File("Test2.txt");
file02.createNewFile();
System.out.println("判断文件或目录是否存在:"+file02.exists());
File file03 = new File("");//绝对路径
System.out.println("判断文件或目录是否存在:"+file03.exists());
System.out.println("是目录:"+file01.isDirectory()+"\t是文件"+file01.isFile());
System.out.println("是目录:"+file02.isDirectory()+"\t是文件"+file02.isFile());
System.out.println("最后修改时间:"+ toDate(file02.lastModified()));
System.out.println("文件的大小:"+file02.length());
}
public static String toDate(long time) {
Date date = new Date(time);
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return format.format(date);
}
}
//输出
路径分隔符:;
路径分隔符:;
路径分隔符:\
路径分隔符:\
判断文件或目录是否存在:true
判断文件或目录是否存在:true
判断文件或目录是否存在:false
是目录:false 是文件true
是目录:false 是文件true
最后修改时间:2019-05-15 14:56:51
文件的大小:0
创建单,多目录
File file = new File("多目录\\子目录");
if(file.exists()) {
System.out.println("该目录已存在");
}else {
System.out.println("开始创建目录");
file.mkdirs(); //创建多目录
}
File file = new File("单目录");
if(file.exists()) {
System.out.println("该目录已存在");
}else {
System.out.println("开始创建目录");
file.mkdir(); //创建单目录
}