java day029 File类
1.File类概述
SUN公司提供给程序员操作文件以及文件夹对应的类。这里涉及到对文件以及文件夹的增删改查工作。
不能操作文件内容,不能对文件进行读写操作。
2.File类构造方法
File(String pathName);
根据指定的文件路径,或者文件夹路径,创建对应的File类对象。路径可以是相对路径,可以是绝对路径。
File(String parent, String childName);
根据指定的父目录文件夹路径,和子文件或子文件夹的名字,创建对应的File类对象。
File(File parent, String childName);
根据指定的父目录File类对象,和子文件或者子文件夹的名字,创建对应的File类对象。
import java.io.File;
public class TestFileConstructor {
public static void main(String[] args) {
//String pathName
File file = new File("D:/MyJavaCode/1.txt");
System.out.println(file);
//String parent, String childName
File file1 = new File("D:/MyJavaCode", "2.txt");
System.out.println(file1);
//File parent, String childName
File file2 = new File(new File("D:/MyJavaCode/"), "3.txt");
System.out.println(file2);
}
}
/*
输出结果:
D:\MyJavaCode\1.txt
D:\MyJavaCode\2.txt
D:\MyJavaCode\3.txt
*/
3.创建文件或者文件夹
boolean createNewFile();
通过File类对象调用,创建File类对象中对应地址的普通文件,创建成功返回true,创建失败返回false;
失败原因:
1.路径不合法,路径不存在,路径错误
2.对应文件夹没有写入权限
3.对应文件已存在
4.磁盘坏道,电脑蓝屏
boolean mkdir();
通过File类对象创建,创建File类对象中对应的文件夹,创建成功返回true,失败返回false
失败原因:
1.路径不合法,路径不存在,路径错误
2.对应文件夹没有写入权限
3.对应文件夹已存在
4.磁盘坏道,电脑蓝屏
boolean mkdirs();
创建文件夹过程中可以完成中间路径
boolean renameTo(File dest);
通过File类对象调用,转为目标dest指定File类对象,可以操作普通文件,可以操作文件夹。移动,重命名
import java.io.File;
import java.io.IOException;
public class TestFileConstructor {
public static void main(String[] args) throws IOException {
//String pathName
File file = new File("D:/MyJavaCode/1.txt");
System.out.println(file);
//String parent, String childName
File file1 = new File("D:/MyJavaCode", "2");
System.out.println(file1);
//File parent, String childName
File file2 = new File(new File("D:/MyJavaCode/"), "3.txt");
System.out.println(file2);
//创建文件
System.out.println(file.createNewFile());
System.out.println(file1.createNewFile());
//创建文件夹
System.out.println(file2.mkdir());
File file3 = new File(new File("D:/MyJavaCode/a/d/d/v/c"), "3.txt");
System.out.println(file3.mkdirs());
File file4 = new File("D:/MyJavaCode/4");
//System.out.println(file.renameTo(file4));
System.out.println(file2.renameTo(file4));
}
}
4.删除文件或者文件夹
boolean delete();
通过File类对象调用,删除File类对象对应的文件或者文件夹
注意:
1. 从磁盘中直接抹除数据,慎用
2.删除操作只针对于空文件夹使用,不能删除非空文件夹
void deleteOnExit();
程序退出后,删除调用该方法File类对象对应的普通文件或者文件夹
用于缓冲文件,缓存问题,日志文件
5.获取文件或者文件夹数据
String getPath();
获取File类文件对象中保存的路径
String getName();
获取File类对象操作对应的文件名或者文件夹名
String getParent();
获取File类对象操作对应的文件或者文件夹的上级目录
String getAbsolutePath();
获取File类对象的绝对路径
Long length();
获取当前文件的占用磁盘字节数
Long lastModified();
获取当前文件夹上一次修改时间的时间戳
public class TestFile {
public static void main(String[] args) throws IOException {
File file = new File("D:/MyJavaCode/4/1.txt");
System.out.println(file.getPath());
System.out.println(file.getParent());
System.out.println(file.getName());
System.out.println(file.length());
System.out.println(file.lastModified());
}
}
6.判断方法
boolean isFile();
判断是否为为文件
boolean isDirectory();
判断是否为文件夹
boolean exists();
判断File类对象对应的内容是否存在
boolean isAbsolute();
判断是否为绝对路径
boolean isHidden();
判断是不是一个隐藏文件
7.文件列表方法
static File[] listRoots();
获取Windows操作系统下所有盘符
String[] list();
获取File类对象对应文件夹中所有子文件或者子文件夹名字
File[] listFiles();
获取File类对象对应文件夹中所有子文件或者子文件夹的File类对象数组
8。FilenameFilter 文件名过滤器接口
boolean accept(File dir, String name);
dir是当前操作获取文件列表的文件夹File类对象
name是当前文件夹下的文件名或者文件夹名
例:
获取文件夹中所有的【.java】文件
package com.qfedu.study.file;
import java.io.File;
import java.io.FilenameFilter;
public class TestFilenameFilter {
public static void main(String[] args) {
File file = new File("D:/MyJavaCode/a");
//用String数组获取file的所有子文件或子文件夹名字
String[] list = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return new File(dir, name).isFile() && name.endsWith(".java");
}
});
for (String string : list) {
System.out.println(string);
}
//用File数组获取
File[] fileList = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return new File(dir, name).isFile() && name.endsWith(".java");
}
});
for (File file2 : fileList) {
System.out.println(file2);
}
//Lambda表达式
File[] fileList1 = file.listFiles((dir, name)
-> new File(dir, name).isFile() && name.endsWith(".java"));
for (File file2 : fileList1) {
System.out.println(file2);
}
}
}