------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
目录: File类概述
递归的思想概述
过滤器概述
一,File类概述
1, File类的概述
文件和目录路径名的抽象表示形式
2,构造方法
//通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
public File(String pathname)
//根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
public File(String parent,String child)
//根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
public File(File parent,String child)
File类的成员方法
1)创建功能
public boolean createNewFile()
public boolean mkdir()
public boolean mkdirs()
示例:
/*
* 创建文件
* */
public static void method() throws IOException{
//创建文件类对象
File file = new File("D:\\abc\\123.txt");
//创建文件.文件对象调用方法 createNewFile();返回
boolean b = file.createNewFile();
//创建成功返回true
System.out.println(b);
}
/*创建文件夹
*
* */
public static void method_1(){
File file = new File("D:\\aaa\\bb\\c");
boolean b = file.mkdirs();
System.out.println(b);
}
2)删除功能
public boolean delete()
3)重命名功能(复制功能)
public boolean renameTo(File dest)
示例:
public static void method_2(){
//源文件路径
File file = new File("D:\\abc\\456.txt");
//目标文件路径
File file1 = new File("D:\\aaa\\456.txt");
//出现了剪切功能
//判断该被封装对象中的内容是不是文件夹,是返回true
boolean b = file.renameTo(file1);
//判断被封装对象中是不是存在路径
boolean b1 = file.exists();
System.out.println(b1);
}
4)判断功能
//是否为文件夹
public boolean isDirectory()
//是否为文件
public boolean isFile()
//是否存在
public boolean exists()
//是否为可读文件
public boolean canRead()
//是否为可写
public boolean canWrite()
//是否隐藏
public boolean isHidden()
5)基本获取功能
//获取绝对路径字符串
public String getAbsolutePath()
//返回的是File对象.
public File getAbsoluteFile()
//将构造方法中的路径变为字符串
public String getPath()
//获区路径中的最后部位的名字
public String getName()
//获取构造方法中封装的文件的长度
public long length()
//获取文件最后被修改的时间
public long lastModified()
示例
public static void method_4(){
File file = new File("D:\\abc\\11.txt");
String n =file.getName();
String s = file.getPath();
System.out.println(n);
System.out.println(s);
}
6)高级获取功能
//获取对象中封装的路径下面的全部内容(包括文件夹以及文件)
public String[] list()
//获取对象中封装的路径下面的全部内容及对应的路径(包括文件夹以及文件)
public File[] listFiles()
二,递归的思想概述
方法定义中调用方法本身的现象
递归注意实现
要有出口,否则就是死递归
次数不能太多,否则就内存溢出
构造方法不能递归使用
示例:
/**
* 递归法 遍历全目录:
*
* */
public static void diguiAll(File file){
File [] lisfile = file.listFiles();
//遍历存储了 文件与文件夹内容的 文件类数组
for(File f : lisfile){
if(f.isDirectory()){
//如果是文件,则再次调用递归方法
diguiAll(f);
}else{
//打印文件
System.out.println(f);
}
}
//直接打印 文件对象 file 得到的结果为 文件夹名字.
//省略此语句,则递归出来的结果中没有文件夹名字
System.out.println(file);
}
示例:
/**
* 递归删除目录
*
*
* */
public static void deleteDir(File file){
//把文件夹 文件 放进 文件类型的数组里.通过listFile()方法
File[] files = file.listFiles();
//遍历
for(File f : files){
//判断是不是文件
if(f.isDirectory()){
//是文件夹,则递归调用该方法
deleteDir(f);
}else{
//是文件时,直接删除
f.delete();
}
}
//删除空文件夹
file.delete();
}
三,过滤器概述
实现过滤器基类FileFilter,并重写accept()方法;
示例
/**
* 获取目录中,指定类型的文件 (需要调用过滤器类FileFilter)
*
* */
public static void method_5(){
File file = new File("D:\\abc");
//获取目录下的指定类型的文件,参数可以传递过滤器对象(自定义的).
//返回值是File类的数组,其中存储了所以指定类型的文件
File[] files = file.listFiles(new FileFilterJpg());
for(File f : files){
System.out.println(f);
}
}
/*
自定义过滤器
*/
//该自定义过滤器类,实现过滤器基类,并重写accept()方法;
public class FileFilterJpg implements FileFilter{
//重写accept()方法.参数为File 类对象:封装的是路径的名字
public boolean accept(File pathname){
//取出对象中路径的名字,getname()返回的是字符串
String name = pathname.getName();
//endswith()返回的是波尔型
return name.endsWith(".jpg");
//不区分大小写时
// return name.toLowerCase().endsWith(".jpg");
}