构造方法
构造方法摘要
//File类的构造函数--练习 private static void show02(){ File file= new File("F:\\04Java\\19java","Hello.java"); System.out.println(file); } private static void show01(){ File f1= new File("F:\\04Java\\19java"); System.out.println(f1);//重写了ToString()方法 File f3= new File("b.txt"); System.out.println(f3); } private static void show03(){ File file=new File("F:\\04Java\\19ava"); File newFile = new File(file,"Hello.java"); System.out.println(newFile); }
主要成员方法
获取的方法
//获取文件绝对路径 private static void show04() { File file=new File("F:\\04Java\\19java"); File absoluteFile=file.getAbsoluteFile();//返回File对象的绝对路径 System.out.println(absoluteFile); File file2=new File("a.txt"); File absoluteFile2=file2.getAbsoluteFile();//返回File对象的绝对路径 System.out.println(absoluteFile2); System.out.println("____________________________"); } //file1.getName() 获取最后一个路径名 private static void show02(){ File file=new File("F:\\04Java\\19java"); String name=file.getName();//最后的路径名 System.out.println(name); File file1=new File("F:\\04Java\\19java\\小小张自由"); String name1=file1.getName();//最后的路径名 System.out.println(name1); } //file.getPath() 构造函数中传递什么值,就返回什么值 private static void show01(){ File file=new File("F:\\04Java\\19java"); String path=file.getPath();//传递的参数是什么,返回值就是什么 System.out.println(path); File file1=new File("b.txt"); String path1=file1.getPath(); System.out.println(path1); } //file.length() 获取文件的大小 private static void show03(){ File file=new File("F:\\迅雷下载\\AirtestIDE-win-1.2.6.zip"); long length=file.length();//文件名的大小,路径错误则为0 System.out.println(length);//单位字节 }
判断的方法
//用于判断构造函数中给定的路径是否为目录、文件 public static void main(String[] args){ File file = new File("F:\\04Java\\19java"); System.out.println(file.exists());//判断文件名是否存在 System.out.println(file.isDirectory());//判断是否以文件夹结尾 System.out.println(file.isFile());//判断是否以文件结尾 }
创建删除的方法
//File类中CreateNewFile()方法只能新建文件,创建成功true private static void show01()throws IOException{ File file=new File("F:\\04Java\\19java\\99.txt"); boolean newFile=file.createNewFile();//只能新建文件,创建成功true System.out.println(newFile); } //File类中Delete()方法 private static void show03(){ File file=new File("F:\\04Java\\19java\\HelloJava"); boolean delete=file.delete();//可以删除文件夹只能是空文件夹 System.out.println(delete); File file1=new File("F:\\04Java\\19java\\99.txt"); boolean delete1=file1.delete();//可以删除文件 System.out.println(delete1); } //File类中mkdir()和mkdirs()的方法创建单级、多级目录 private static void show02(){ File file=new File("F:\\04Java\\19java\\HelloJava"); boolean mkdir=file.mkdir();//创建单级目录 System.out.println(mkdir); File file1=new File("F:\\04Java\\19java\\Hello\\Java"); boolean mkdirs=file1.mkdirs();//创建多级目录 System.out.println(mkdirs); }
目录的遍历
//file.listFiles();方法返回值是一个File[] private static void show02(){ File file=new File("F:\\04Java\\19java"); File[]files=file.listFiles(); for(File file1:files){ System.out.println(file1); } } //file.list();方法返回值是一个String[] private static void show01(){ File file=new File("F:\\04Java\\19java"); String[] list=file.list(); System.out.println(list);//地址值 for(String i:list){ System.out.println(i); } }
案例-文件搜索
1. 搜索后缀名为.pdf的文件
2. 目录搜索,无法判断多少级目录,所以使用递归,遍历所有目录。
3. 遍历目录时,获取的子文件,通过文件名称,判断是否符合条件。
public class DiGuiDemo3 { public static void main(String[] args) { // 创建File对象 File dir = new File("E:\\书籍"); // 调用打印目录方法 printDir(dir); } public static void printDir(File dir) { // 获取子文件和目录 File[] files = dir.listFiles(); // 循环打印 for (File file : files) { if (file.isFile()) { // 是文件,判断文件名并输出文件绝对路径 if (file.getName().endsWith(".PDF")) { System.out.println("文件名:" + file.getAbsolutePath()); } }else{ // 是目录,继续遍历,形成递归 printDir(file); } } } }
案例-文件搜索(高级玩法)
使用FileFilter接口或者FilenameFilter接口,是File的过滤器。该接口方法的参数是FIle类的对象。接口中只有一个方法。
//Sun公司封装的两个文件过滤的接口 public interface FilenameFilter { boolean accept(File dir, String name); } public interface FileFilter { boolean accept(File pathname); }
下面任意一种方式都可以实现文件搜索的功能:方式一使用了 FileFilter接口,方式二使用了FilenameFilter接口。
以下三种玩法一个使用了接口的实现类,一个使用了Lambda表达式、一个使用了匿名内部类
public static void main(String[] args) { File file=new File("E:\\书籍"); //System.out.println(file); getAllFile(file); } //以下是三种玩法 public static void getAllFile(File file) { //方式一、使用FIleFilter接口的实现类 File[] files = file.listFiles(new Demo09FileFilterImpl());//实现了FIleFilter接口 //方式1. 使用Lambda表达式 File[] files = file.listFiles((pathname)->{ return pathname.getName().toLowerCase().endsWith(".pdf");// }); //方式二、使用FilenameFilter File[] files =file.listFiles(new FilenameFilter() { @Override //两个路径 public boolean accept(File dir, String name) { return new File(dir,name).isDirectory()|| name.toLowerCase().endsWith("pdf"); } }); }