File类概述
在Java中,当我们需要访问外存的文件,实现内存与外存的交互时就要使用IO流来实现。而IO流在使用时必须给出明确的文件目录后文件。File类的一个对象相当于或代表一个文件或文件目录。它为IO提供了要操作的具体的文件目录或文件。因此,在使用IO流之前必须提供一个实例化的File类对象。
File类的使用
File类的构造器
实例化一个File类对象需要提供具体的文件名或文件目录。提供路径的方式有相对路径和绝对路径。
相对路径:相对于某个路径下,指明的路径
绝对路径:包含盘符在内的文件或文件目录
以下是File类的构造器
File(String pathname) //pathname 为文件路径
File(Sting parent ,String child) //parent为路径 ,child为文件名
File(File file1 ,String child)//file1为一个file类对象,child为文件名
创建一个File类对象:
public void test01() {
//构造器1
File lan = new File("lan.txt");//相对路径
//绝对路径
File file = new File("D:\\java\\io流\\src\\FileTest\\xi.txt");
System.out.println(lan);
System.out.println(file);
//构造器2
File io流 = new File("D:\\java", "io流");
System.out.println(io流);
//构造器3
File file1 = new File(io流, "hi.txt");
System.out.println(file1);
}
注意:以上用构造创建File类对象,其在外存上的文件并未创建,只是在内存中声明并创建了对象而已。
File类的方法
File类的获取功能
方法名 | 作用 |
---|---|
String getAbsoluteFile() | 获得文件绝对路径 |
String getPath() | 获得路径 |
String getName() | 获得名称 |
String getParent() | 获取上层文件目录,若无返回null |
long length() | 获得文件长度 |
long lastModified() | 得到最后一次修改时间 |
public void Test02(){
File file = new File("hello.txt");
//绝对路径
System.out.println(file.getAbsoluteFile());
//获取路径
System.out.println(file.getPath());
//获取名称
System.out.println(file.getName());
//获取上层文件目录,若无返回null
System.out.println(file.getParent());
//文件长度
System.out.println(file.length());
//最后一次修改时间
System.out.println(file.lastModified());
}
File类的判断功能
方法名 | 作用 |
---|---|
boolean isDirectory() | 判断是否是文件目录 |
boolean isFile() | 是否是文件 |
boolean exists() | 是否存在 |
boolean canRead( | 是否可读 |
boolean canWrite() | 是否可写 |
boolean isHidden() | 是否隐藏 |
public void Test05(){
File file = new File("D:\\io流\\src\\FileTest\\la.txt");
//判断是否是文件目录
System.out.println(file.isDirectory());
//是否是文件
System.out.println(file.isFile());
//是否存在
System.out.println(file.exists());
//是否可读
System.out.println(file.canRead());
//是否可写
System.out.println(file.canWrite());
//是否隐藏
System.out.println(file.isHidden());
}
File类的创建和删除
createNewFile():创建文件,若文件存在则不创建,返回false
mkdir():创建文件目录,只能创建当前一级的目录。若当前文件目录存在,则不创建返回false
mkdirs():创建文件目录,可以创建多级目录。若当前文件目录存在,则不创建返回false
delete():删除文件或文件目录
public void Tes06() throws IOException {
File file = new File("hi.txt");
if (!file.exists()) {
file.createNewFile();
System.out.println("创建成功");
}else {//文件存在
file.delete();
System.out.println("删除成功");
}
}
public void Tes07(){
//文件目录的创建
File file = new File("D:\\io\\io1");
boolean mkdir = file.mkdir();
if (mkdir){
System.out.println("创建成功");
}else{
System.out.println("创建失败");
}
boolean mkdir1 = file.mkdirs();
if (mkdir1){
System.out.println("创建成功");
}else{
System.out.println("创建失败");
}
}
文件的遍历
遍历文件依然采用for—each循环
其遍历结果为文件的多级目录
public void Test03(){
File file = new File("D:\\io流\\src\\FileTest");
String[] list = file.list();
//文件目录
for (String i:list)
{
System.out.println(i);
}
System.out.println("================");
//给出路径
for (File listFile : file.listFiles()) {
System.out.println(listFile);
}
}
小结
1、File类的一个对象相当于,代表一个文件或文件目录
2、File类的声明在Java.io包下
3、File类中涉及对文件和文件目录的创建、删除、重命名、修改时间、文件大小;
但并未涉及对文件内容的操作(读取、写入),若对文件内容操作需使用IO流。
4、后续File类对象常作为参数传递到流的构造器当中,指明读取和写入的“终点”