File类介绍
- 概念:代表物理盘符中的一个文件或者文件夹。
- 方法:
- createNewFile()//创建一个新文件
- mkdir()//创建一个新目录
- delete()//删除文件或空目录
- exists()//判断File对象所代表的对象是否存在
- getAbsolutePath()//获取文件的绝对路径
- getName ()//取得名字
- getParent()//获取文件/目录所在的目录
- isDirectory()//是否是目录
- isFile() //是否是文件
- length() //获得文件的长度
- listFiles()//列出目录中的所有内容
- renameTo()//修改文件名为
File类的使用
代码:
package com.wlw.io.demo03;
import java.io.File;
import java.util.Date;
/**
* 文件操作
* (1)获取获取分隔符
* (2)文件操作
* (3)文件夹操作
*/
public class FileDemo01 {
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:\\Program Files\\IDEAworkspace\\file\\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:\\Program Files\\IDEAworkspace\\file\\aaa\\bbb\\ccc");
if(!dir.exists()){
dir.mkdir(); //只能创建单级目录
boolean b = dir.mkdirs();//可以创建多级目录
System.out.println("创建结果:"+b);
}
//2.删除文件夹
//2.1直接删除(只能删除空目录,只能删除单级目录(最底层的))
//System.out.println("删除结果:"+dir.delete());
//2.2jvm删除(只能删除空目录,只能删除单级目录(最底层的))
//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.遍历文件夹
System.out.println("------------------遍历文件夹--------------------");
File dir2 = new File("E:\\BaiduNetdiskDownload\\0000-java复习\\笔记\\截图");
/*
String[] files = dir2.list();
for (String s : files) {
System.out.println(s);
}
*/
File[] files1 = dir2.listFiles();
for (File file : files1) {
System.out.println("名称:"+file.getName());
}
}
}
FileFilter(文件过滤器)接口
-
public interface FileFilter
- boolean accept (File pathname)
-
当调用File类中的listFiles()方法时,支持传入FileFilter接口接口实现类,对获取文件进行过滤,只有满足条件的文件的才可出现在listFiles()的返回值中。
代码:
package com.wlw.io.demo03;
import java.io.File;
import java.io.FileFilter;
//FileFilter 的使用
public class FileFilterDemo {
public static void main(String[] args) {
File dir = new File("E:\\BaiduNetdiskDownload\\0000-java复习\\笔记\\截图");
File[] files = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if (pathname.getName().endsWith(".jpg")) {
return true; //满足要求返回true
}
return false;//不满足要求返回false
}
});
for (File file : files) {
System.out.println(file.getName());
}
}
}
案例1:递归遍历文件夹与案例2:递归删除文件夹
代码:
package com.wlw.io.demo03;
import java.io.File;
/**
* 案例1:递归遍历文件夹
* 案例2:递归删除文件夹
*/
public class ListDemo {
public static void main(String[] args) {
listDir(new File("D:\\Program Files\\IDEAworkspace\\file\\myfiles"));
//deleteDir(new File("D:\\Program Files\\IDEAworkspace\\file\\myfiles"));
}
//案例1:递归遍历文件夹
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());
}
}
/*
D:\Program Files\IDEAworkspace\file\myfiles
D:\Program Files\IDEAworkspace\file\myfiles\新建 Microsoft Excel 工作表.xlsx
D:\Program Files\IDEAworkspace\file\myfiles\新建文件夹
D:\Program Files\IDEAworkspace\file\myfiles\新建文件夹\新建 Microsoft Excel 工作表.xlsx
D:\Program Files\IDEAworkspace\file\myfiles\新建文件夹\新建 Microsoft PowerPoint 演示文稿.pptx
D:\Program Files\IDEAworkspace\file\myfiles\新建文件夹 (2)
D:\Program Files\IDEAworkspace\file\myfiles\新建文件夹 (2)\新建 Microsoft Excel 工作表.xlsx
D:\Program Files\IDEAworkspace\file\myfiles\新建文件夹 (2)\新建文本文档.txt
D:\Program Files\IDEAworkspace\file\myfiles\新建文本文档.txt
====================================================================================
D:\Program Files\IDEAworkspace\file\myfiles\新建 Microsoft Excel 工作表.xlsx,删除:true
D:\Program Files\IDEAworkspace\file\myfiles\新建文件夹\新建 Microsoft Excel 工作表.xlsx,删除:true
D:\Program Files\IDEAworkspace\file\myfiles\新建文件夹\新建 Microsoft PowerPoint 演示文稿.pptx,删除:true
D:\Program Files\IDEAworkspace\file\myfiles\新建文件夹,删除:true
D:\Program Files\IDEAworkspace\file\myfiles\新建文件夹 (2)\新建 Microsoft Excel 工作表.xlsx,删除:true
D:\Program Files\IDEAworkspace\file\myfiles\新建文件夹 (2)\新建文本文档.txt,删除:true
D:\Program Files\IDEAworkspace\file\myfiles\新建文件夹 (2),删除:true
D:\Program Files\IDEAworkspace\file\myfiles\新建文本文档.txt,删除:true
D:\Program Files\IDEAworkspace\file\myfiles,删除:true
*/