简介

1. 用来将文件或者文件夹封装成对象
2. 方便对文件与文件夹的属性信息进行操作
3. File对象可以作为参数传递给流的构造函数
4. 了解File类中的常用方法


File构造函数

package com.gaopeng.file;

import java.io.File;

public class Demo01 {
public static void main(String[] args) {
//可以将一个已存在,或为存在的文件或者文件夹封装成一个File对象
File file = new File("a.txt");
//路径与文件分开传递
new File("C:\\","a.txt");
//传递文件夹
File file1 = new File("C:\\");
//文件对象与文件传递参数
new File(file1,"a.txt");
//获取系统路径分隔符
File file2 = new File("C:" + File.separator + "a.txt");
System.out.println(file2);
}
}


File类的基本方法

  1. dir.delete(); 删除一个文件夹时,文件夹不为空不能删除
  2. file.createNewFile();新建一个文件时,如果文件存在,则不进行创建
  3. file.isFile();文件不存在时也返回false,所以在判断之前需要判断文件是否存在
  4. file.renameTO(file2);可以移动文件并重命名
  5. file.list();file必须是目录对象,如果是一个文件对象会空指针异常
  6. file.list(FileNameFilter filter);实现FileName Filter类重写accep方法,并实例化类,进行文件名过滤。本质过滤器获取所有文件名,进行判断,符合规则,则存入某个容器
  7. 图解:
    Java基础09-IO流-File类_构造函数

打印一个目录中的所有文件(包含子目录中的文件)

  1. 思路
  1. file.listFiles();获取所有的文件对象
  2. 判断是文件还是目录
  3. 如果是目录,遍历目录进行判断(递归),如果是文件则打印输出
  1. Demo

package com.gaopeng.file;

import java.io.File;

public class Demo04 {
public static void main(String[] args) {
File file = new File("D:\\");
int level=0;
listAll(file,level);
}

private static void listAll(File file, int level) {
File[] files = file.listFiles();
level++;
for (File file1 : files) {
if (!file1.isHidden()) {
if(file1.isFile()){
System.out.println(getSpace(level)+file1.getName());
}
else if(file1.isDirectory()){
listAll(file1, level);
}
}

}
}

private static String getSpace(int level) {
StringBuilder str = new StringBuilder();
str.append("| ");
for (int i = 0; i < level; i++) {
str.append("|--");
}
return str.toString();
}
}


删除一个有内容的目录

  1. 需要进行深度遍历
  2. 删除所有文件
  3. 删除目录