目录
一.File类概述
java.io.File 文件和目录路径名的抽象表示形式;主要用于文件和目录的创建、查找和删除等操作。File类将文件,文件夹和路径封装成了对象,提供大量的方法来操作这些对象。
- 文件:存储实际数据的容器,File
- 目录:文件夹,Directory
- 路径:文件或者目录在磁盘中的存储位置,Path
二.File类的静态成员变量
- static String pathSeparator 与系统有关的路径分隔符
- Window操作系统,分隔符是分号
- Linux操作系统,分隔符是冒号
- static String separator 与系统有关的默认名称分隔符
- Window操作系统,名称分割符号为 \
- Linux操作系统,名称分隔符号为 /
public class Demo01 {
public static void main(String[] args) {
//static String pathSeparator
//与系统有关的路径分隔符,为了方便,它被表示为一个字符串。
String pathSeparator = File.pathSeparator;
System.out.println(pathSeparator);
//static String separator
// 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。
String separator = File.separator;
System.out.println(separator);
}
}
三.File类的构造方法
- File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例
- File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例
- File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例
public class Demo02 {
public static void main(String[] args) {
method01();
method02();
method03();
}
//File(String pathname)
//通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
public static void method01(){
File file = new File("D:\\ORACLE\\a");
System.out.println(file);
}
// File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例
// 传递字符串的父路径和传递字符串的子路径,可以单独操作父路径和单独操作字符经
public static void method02(){
File file = new File("D:\\ORACLE", "a\\a.java");
System.out.println(file);
}
//File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例
// 传递File类型的父路径和字符串的子路径
public static void method03(){
File parent = new File("D:\\ORACLE");
File file = new File(parent, "a.java");
System.out.println(file);
}
}
三.File类的获取方法
- String getName() 返回由此抽象路径名表示的文件或目录的名称
- File getParentFile() 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null
- long length() 返回由此抽象路径名表示的文件的长度
- File getAbsoluteFile() 返回此抽象路径名的绝对路径名形式
- String getPath() 将此抽象路径名转换为一个路径名字符串
public class Demo03 {
public static void main(String[] args) {
// method01();
// method02();
// method03();
// method04();
method05();
}
/**
* String getName() 返回由此抽象路径名表示的文件或目录的名称
* 获取构造方法中封装的路径的最后的名称
* 名称可能是文件夹名,可能是文件名
*/
public static void method01(){
File file = new File("D:\\ORACLE\\a");
System.out.println(file.getName());
File file1 = new File("D:\\ORACLE\\a\\A.java");
System.out.println(file1.getName());
}
/**
* File getParentFile() 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null
* 获取构造方法中封装的路径的父路径
* 方法返回的是File对象,可以使用方法调用链
*/
public static void method02(){
File file = new File("D:\\ORACLE\\a");
File parentFile = file.getParentFile();
System.out.println(parentFile);
System.out.println(parentFile.getParentFile());
}
/**
* long length() 返回由此抽象路径名表示的【文件】的长度
* 获取构造方法中路径表示的文件的字节数
*/
public static void method03(){
File file = new File("D:\\ORACLE\\a\\c.txt");
System.out.println(file.length());
File file1 = new File("D:\\ORACLE\\a");
System.out.println(file1.length());
}
/**
* File getAbsoluteFile() 返回此抽象路径名的绝对路径名形式
* 返回构造方法中路径的绝对路径,返回值是File对象
* 注意:直接残敌文件名或者文件夹名,获取到的绝对路径,将从IDEA的工程下计算
*/
public static void method04(){
File file = new File("D:\\ORACLE\\a\\A.java");
System.out.println(file.getAbsoluteFile());
File file1 = new File("A.java");
System.out.println(file1.getAbsoluteFile());
}
/**
* String getPath() 将此抽象路径名转换为一个路径名字符串
* 将构造方法中的路径转成字符串类型
*/
public static void method05(){
File file = new File("D:\\ORACLE\\a\\A.java");
System.out.println(file.getPath());
}
}
四.File类的创建和删除功能
- boolean createNewFile() 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件
- boolean mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录
- boolean delete() 删除此抽象路径名表示的文件或目录
public class Demo04 {
public static void main(String[] args) throws IOException {
// method01();
// method02();
method03();
}
/**
* boolean createNewFile() 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
* 创建之前是不存在的新文件,创建成功返回true
* 如果存在,不创建,返回false
* 创建文件的路径写在File类的构造方法中
* 该方法只能创建文件
*/
public static void method01() throws IOException {
File file = new File("D:\\ORACLE\\a\\C.java");
boolean newFile = file.createNewFile();
System.out.println(newFile);
}
/**
* boolean mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录
* 创建之前不存在的文件夹,创建成功返回true
* 如果文件夹存在,不创建,返回false
* 该方法只能创建文件夹
* mkdirs():可以同时创建多级目录
* mkdir():只能创建一级目录
*/
public static void method02(){
File file = new File("D:\\ORACLE\\a\\b\\c");
boolean mkdirs = file.mkdirs();
System.out.println(mkdirs);
}
/**
* boolean delete() 删除此抽象路径名表示的文件或目录
* 删除目录或者是文件
* 删除成功返回true,删除File构造方法封装路径
* 注意:删除文件夹,保证文件夹是空的,否则不能删除
*/
public static void method03(){
// File file = new File("D:\\ORACLE\\a\\b\\c");
// boolean delete = file.delete();
// System.out.println(delete);
File file1 = new File("D:\\ORACLE\\a\\b");
file1.delete();
}
}
五.File类判断方法
- boolean exists() 测试此抽象路径名表示的文件或目录是否存在
- boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录
- boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件
public class Demo {
public static void main(String[] args) throws Exception {
method03();
}
/*
boolean exists() 测试此抽象路径名表示的文件或目录是否存在
判断File构造方法中封装的路径是否存在,存在返回true
此File表示的文件或目录是否实际存在
*/
public static void method01() throws Exception {
File file01=new File("d:\\a\\b");
boolean b1 = file01.exists();
System.out.println(b1);//true
File file02=new File("d:\\a\\b\\a.txt");
boolean b2 = file02.exists();
System.out.println(b2);//true
File file03=new File("d:\\e.txt");
boolean b3 = file03.exists();
System.out.println(b3);//false
}
/*
boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录
判断File构造方法中路径是不是文件夹;是文件夹,返回true
*/
public static void method02(){
File file01=new File("d:\\a");
boolean b1 = file01.isDirectory();
System.out.println(b1);
}
/*
boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件
判断File构造方法中,封装的路径,是不是文件,是文件,返回true
*/
public static void method03(){
File file01=new File("d:\\a\\b\\a.txt");
boolean b1 = file01.isFile();
System.out.println(b1);
}
}
六.File类目录遍历方法
- File[] listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件
public class Demo05 {
public static void main(String[] args) {
method01();
}
public static void method01(){
File file = new File("D:\\ORACLE\\a");
File[] files = file.listFiles();
for (File f : files) {
System.out.println(f);
}
System.out.println(files.length);
}
}
七.File类的文件过滤器
- public File[] listFiles(FileFilter filter)返回一个File数组,表示该File目录中的所有的子文件或目录,filter是文件过滤器,可以过滤不需要的文件
- FileFilter接口
- 文件过滤器接口,此接口的实现类可以传递给方法listFiles(),实现文件的过滤功能
- FileFilter接口方法:public boolean accept(File path):方法参数就是listFiles()方法获取到的文件或者目录的路径。如果方法返回true,表示需要此路径,否则此路径将被忽略
public class Demo05 {
public static void main(String[] args) {
method01();
}
public static void method01(){
File file = new File("D:\\ORACLE\\a");
File[] files = file.listFiles(new MyFilter());
for (File f : files) {
System.out.println(f);
}
System.out.println(files.length);
}
}
class MyFilter implements FileFilter{
@Override
public boolean accept(File pathname) {
return pathname.getName().toLowerCase().endsWith(".java");
}
}