File类
- 概念:代表物理盘符中的一个文件或者文件夹。
- 方法:
import java.io.File;
import java.util.Date;
/**
* File类的使用
* 1.分隔符
* 2.文件操作
* 3.文件夹操作
*/
public class Demo01 {
public static void main(String[] args) throws Exception{
//separator();
// fileOpe();
directoryOpe();
}
//1.分隔符
public static void separator(){
System.out.println("路径分隔符"+ File.pathSeparator);
System.out.println("名称分隔符"+File.separator);
}
//2.文件操作
public static void fileOpe() throws Exception{
//1.创建文件
File file = new File("d:\\file.txt");
if(!file.exists()){
boolean b =file.createNewFile();
System.out.println("创建结果:" +b);
}
//2.删除文件
//2.1直接删除
//System.out.println("删除结果:"+file.delete());
//2.2使用jvm退出时删除
// file.deleteOnExit();
// Thread.sleep(5000);
//3.获取文件信息
System.out.println("获取文件的绝对路径"+file.getAbsolutePath());
System.out.println("获取路径"+file.getPath());
System.out.println("获取文件名称"+file.getName());
System.out.println("获取父目录"+file.getParent());
System.out.println("获取文件长度"+file.length());
System.out.println("文件创建时间:"+new Date(file.lastModified()).toLocaleString());
//4.判断
System.out.println("是否可写:"+file.canWrite());
System.out.println("是否是文件"+file.isFile());
System.out.println("是否隐藏"+file.isHidden());
}
//3.文件夹操作
public static void directoryOpe()throws Exception{
//1.创建文件夹
File dir = new File("d:\\aaa\\bbb\\ccc");
System.out.println(dir);
if(!dir.exists()){
// dir.mkdir();
System.out.println("创建结果:"+dir.mkdirs());
}
//2.删除文件夹
//2.1直接删除(注意删除空目录)
// System.out.println("删除结果"+dir.delete());
//2.2使用jvm删除
// dir.deleteOnExit();
// Thread.sleep(5000);
//3.获取文件夹信息
System.out.println("获取绝对路径:"+dir.getAbsolutePath());
System.out.println("获取路径:"+dir.getPath());
System.out.println("获取文件夹名称:"+dir.getName());
System.out.println("获取父目录:"+dir.getParent());
System.out.println("获取创建时间:"+new Date(dir.lastModified()).toLocaleString());
//4.判断
System.out.println("是否是文件夹:"+dir.isDirectory());
System.out.println("是否隐藏:"+dir.isHidden());
//5.遍历文件夹
File dir2 = new File("d:\\aaa\\bbb\\ccc");
String[] files = dir2.list();
System.out.println("========================");
for (String string:files) {
System.out.println(string);
}
}
}
FileFilter接口
- public interface FileFilter
- boolean accept(File pathname)
- 当调用File类中的listFiles()方法时,支持传入FileFilter接口实现类,对获取文件进行过滤,只有满足条件的文件才可以出现在listFiles()的返回值中。
System.out.println("======FileFilter接口的使用========");
File[] files2=dir2.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if(pathname.getName().endsWith(".png")){
return true;
}
return false;
}
});
for (File file:files2){
System.out.println(file.getName());
}
import java.io.File;
/**
* 案例1.递归遍历文件夹
* 案例2.递归删除文件夹
*/
public class ListDemo {
public static void main(String[] args) {
// listdir(new File("d:\\myfiles"));
deleteDir(new File("d:\\myfiles"));
}
public static void listdir(File dir){
File[] files = dir.listFiles();
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());
}
}
}
}
//案例2.递归删除文件夹
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());
}
}