2022.5.5 I/O File类
File类
概念:代表物理盘符中的一个文件或者文件夹
createNewFile()//创建一个新文件 mkdir()//创建一个新目录 delete()//删除文件或空目录 exists()//判断File对象所对象所代表的对象是否存在 getAbsolutePath()//获取文件的绝对路径 getName ()//取得名字 getParent()//获取文件/目录所在的目录 isDirectory()//是否是目录 isFile()//是否是文件 length()//获得文件的长度 listFiles()//列出目录中的所有内容 renameTo()//修改文件名为
-
分隔符
package com.xing.File;
import java.io.File;
public class Demo01 {
public static void main(String[] args) {
System.out.println(File.separator);// 路径分隔符 \
System.out.println(File.pathSeparator);// 名称分隔符;
}
}
-
文件操作
package com.xing.File;
import java.io.File;
import java.io.IOException;
import java.util.Date;
public class Demo02 {
public static void main(String[] args) throws IOException {
//创建一个文件对象,但没有创建文件
File file = new File("file.txt");//里面为相对路径
if(!file.exists()){ // 是否存在 存在不创建 不存在则创建
//创建文件
boolean b = file.createNewFile();//返回值为boolean类型 true为创建成功
System.out.println("创建结果"+b);
}
// 2. 删除文件
// 2.1 直接删除
System.out.println("删除结果"+file.delete()); // 成功返回true
// 2.2 使用jvm退出时删除
file.deleteOnExit();
// 3. 获取文件信息
System.out.println("获取绝对路径" + file.getAbsolutePath());//C:\Users\16159\Desktop\code\IO\file.txt
System.out.println("获取路径" + file.getPath());//file.txt
System.out.println("获取文件名称" + file.getName());//file.txt
System.out.println("获取父目录" + file.getParent());
System.out.println("获取文件长度" + file.length());//内容占多少字节
//lastModified()返回long类型 转为时间类型
System.out.println("文件创建时间" + new Date(file.lastModified()));//Thu May 05 10:19:06 GMT+08:00 2022
// 4. 判断
System.out.println("是否可写" + file.canWrite());
System.out.println("是否是文件" + file.isFile());
System.out.println("是否隐藏" + file.isHidden());
}
}

-
文件夹操作
package com.xing.File;
import java.io.File;
import java.util.Date;
public class Demo03 {
public static void main(String[] args) {
// 1. 创建文件夹对象
File dir = new File("d:\\aaa\\bbb\\ccc");
if(!dir.exists()){// 是否存在 存在不创建 不存在则创建
//dir.mkdir(); // 只能创建单级目录
dir.mkdirs(); // 创建多级目录 返回boolean类型
System.out.println("创建结果"+dir.mkdirs());
}
// // 2. 删除文件夹
// // 2.1 直接删除
// System.out.println("删除结果"+dir.delete()); // 只能删除最底层空文件夹
// // 2.2 使用jvm删除
// dir.deleteOnExit();
// 3. 获取文件夹信息
System.out.println("获取绝对路径" + dir.getAbsolutePath());
System.out.println("获取路径" + dir.getPath());
System.out.println("获取文件夹名称" + dir.getName());//ccc 最底层文件夹名称
System.out.println("获取父目录" + dir.getParent());//d:\aaa\bbb 最底层文件夹父目录
System.out.println("文件夹创建时间" + new Date(dir.lastModified()));
// 4. 判断
System.out.println("是否是文件夹" + dir.isFile());
System.out.println("是否隐藏" + dir.isHidden());
// 5. 遍历文件夹
File dir2 = new File("d:\\aaa");
String[] files = dir2.list();//list()返回值为字符串类型的数组
//打印aaa文件夹中文件的名称
for (String file : files) {
System.out.println(file);
}
}
}
FileFilter接口(文件过滤器)
-
boolean accept(File pathname)
-
当调用File类中的listFiles()方法时,支持传入FileFilter接口接口实现类,对获取文件进行过滤,只有满足条件的文件的才可出现在listFiles()的返回值中。
-
listFiles()方法是返回某个目录下所有文件和目录的绝对路径,返回的是File数组
package com.xing.File;
import java.io.File;
import java.io.FileFilter;
import java.util.Date;
public class Demo04 {
public static void main(String[] args) {
//遍历文件夹
File dir = new File("d:\\aaa");
//参数为FileFilter接口的实现类 返回值为File数组
File[] files = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
//这个文件 文件名 文件后缀
if (pathname.getName().endsWith(".txt")) {
return true;//保留文件
}
return false;//不满足条件过滤掉
}
});
for (File file : files) {
System.out.println(file);
}
}
}

递归遍历、删除文件夹
package com.xing.File;
import java.io.File;
public class Demo05 {
public static void main(String[] args) {
//文件夹对象 file代表了aaa文件夹
File file = new File("d:\\aaa");
//listdir(file);
deletedir(file);
}
//递归遍历文件夹
// 参数为遍历的文件夹名称
public static void listdir(File dir) {
File[] files = dir.listFiles();//返回某个目录下所有文件和目录的绝对路径,返回的是File数组
System.out.println("文件夹路径"+dir.getAbsolutePath());
if (files != null && files.length > 0) {//文件夹中有内容
for (File file : files) {
if (file.isDirectory()) {//如果下面还是文件夹 递归
listdir(file);
}else {//文件打印
System.out.println(file.getAbsolutePath());
}
}
}
}
//递归删除文件夹
public static void deletedir(File dir){
File[] files = dir.listFiles();
if(files != null && files.length > 0){
for(File file : files){
if(file.isDirectory()){
deletedir(file); // 递归
}else{
// 删除文件
System.out.println(file.getAbsolutePath() + "删除" + file.delete());
}
}
}
//删除文件夹
System.out.println(dir.getAbsolutePath()+"删除"+dir.delete());
}
}

浙公网安备 33010602011771号