File 类


概述

​java.io.File​

类是文件和目录路径名的抽象, 主要用于文件和目录的创建, 查找和删除等操作.

构造方法


  • ​public File(String pathname)​​: 通过将给定的路径名字符串准换为抽象路径名来创建新的 File 实例
  • ​public File(String parent, String child)​​: 从父路径名字符串和子路径名字符串创建新的 File 实例
  • ​public File(File parent, String child)​​: 从父抽象路径名和子路径名字符串创建新的 File 实例

代码展示

import java.io.File;
public class Test {
public static void main(String[] args) {
// 文件路径名
String pathname = "a.txt";
File file1 = new File(pathname);
// 通过父路径和子路径字符串
String parent = "c:/Users/Windows/Desktop";
String child1 = "b.txt";
File file2 = new File(parent, child1);

// 通过父级File对象和子路径字符串
File parentDir = new File("c:/Users/Windows/Desktop");
String child2 = "b.txt";
File file3 = new File(parentDir, child2);
}
}

注意事项


  1. 一个 File 对象代表硬盘中实际存在的一个文件或者目录
  2. 无论该路径下是否存在文件或者目录, 都不影响 File 对象的创建

常用方法

获取功能的方法


  • ```public String getAbsolutePath()``: 返回此 File 的绝对路径名字符串
  • ​public String getPath()​​: 返回此 File 的构造路径字符串
  • ​public String getName()​​: 返回由此 File 表示的文件或者目录的名称
  • ​public long length()​​: 返回由此 File 表示的文件的长度

代码展示

import java.io.File;
public class Test {
public static void main(String[] args) {
File f = new File("c:/Users/Windows/Desktop/d.txt");
System.out.println("文件的绝对路径:" + f.getAbsolutePath());
System.out.println("文件的构造路径:" + f.getPath());
System.out.println("文件名称:" + f.getName());
System.out.println("文件长度:" + f.length());
}
}
输出结果:
文件的绝对路径:c:\Users\Windows\Desktop\d.txt
文件的构造路径:c:\Users\Windows\Desktop\d.txt
文件名称:d.txt
文件长度:0

绝对路径和相对路径


  • 绝对路径: 从盘符开始的路径, 这是一个完整的路径
  • 相对路径: 相对于项目目录的路径, 这是一个便捷的路径 (开发中经常使用)

代码展示

import java.io.File;
public class Test {
public static void main(String[] args) {
// C盘下的a.txt文件
File f1 = new File("C:/Users/Windows/Desktop/a.txt");
System.out.println(f1.getAbsolutePath());
// 项目下的a.txt文件
File f2 = new File("a.txt");
System.out.println(f2.getAbsolutePath());
}
}
输出结果:
C:\Users\Windows\Desktop\a.txt
C:\Users\Windows\IdeaProjects\测试6\a.txt

判断功能的方法


  • ​public boolean exists()​​: 此 FIle 表示的文件或目录是否实际存在
  • ​public boolean isDirectory()​​: 此 File 表示的是否为目录
  • ​public boolean isFile()​​: 此 FIle 表示的是否为文件

代码展示

import java.io.File;
public class Test {
public static void main(String[] args) {
File f1 = new File("a.txt");
File f2 = new File("b.txt") ;
// 判断是否存在
System.out.println("f1 是否存在:" + f1.exists());
System.out.println("f2 是否存在:" + f2.exists());
// 判断是文件还是目录
System.out.println("f1 是否是文件" + f1.isFile());
System.out.println("f1 是否是目录" + f1.isDirectory());
}
}

创建删除功能的方法


  • ​public boolean createNewFile()​​: 当且仅当具有该名称的文件尚不存在时, 创建一个新的空文件
  • ​public boolean delete()​​: 删除由此 File 表示的文件或目录
  • ​public boolean mkdir()​​: 创建由此 File 表示的目录
  • ​public boolean mkdirs()​​: 创建由此 File 表示的目录, 包括任何必须但不存在的父目录

代码展示

import java.io.File;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
// 文件的创建
File f1 = new File("aaa.txt");
System.out.println("是否存在:" + f1.exists()); // false
System.out.println("是否创建:" + f1.createNewFile()); // true
System.out.println("是否存在:" + f1.exists()); // true
// 目录的创建
File f2 = new File("newDir");
System.out.println("是否存在:" + f2.exists()); // false
System.out.println("是否创建:" + f2.mkdir()); // true
System.out.println("是否存在:" + f2.exists()); // true
// 创建多级目录
File f3 = new File("newDira/newDirb");
System.out.println(f3.mkdir()); // false
File f4 = new File("newDira/newDirb");
System.out.println(f4.mkdirs()); // true
// 文件的删除
System.out.println(f1.delete()); // true
// 目录的删除
System.out.println(f2.delete()); // true
System.out.println(f4.delete()); // false
}
}

API 中说明: delete 方法, 如果此 File 表示目录, 则目录删空才能删除.

目录的遍历


  • ​public String[] list()​​: 返回一个 String 数组, 表示该 File 目录中的所有子文件或目录
  • ​public File[] listFiles()​​: 返回一个 File 数组, 表示该 File 目录中的所有的子文件或目录

import java.io.File;
public class Test {
public static void main(String[] args) {
File dir = new File("java_code");
// 获取当前目录下的文件夹名称
String[] names = dir.list();
for(String name : names){
System.out.println(name);
}
// 获取当前目录下的文件以及文件夹对象, 只要拿到了文件对象, 那么就可以获取更多信息
File[] files = dir.listFiles();
for(File file : files){
System.out.println(file);
}
}
}

注: 调用 listFiles 方法的 File 对象, 表示的必须是实际存在的目录. 否则返回 null, 无法进行遍历.