Files获取文件_Files获取文件


1 File类

1.1 概述

java.io.file 类是文件和目录的路径名的抽象表示,主要用于文件和目录的创建,查找和删除等操作。

1.2 构造方法

  • public File(string pathname) :通过将给定的路径名称字符串转换为抽象路径名来创建新的File实例。
  • public File(string parent,string child):从父路径名字符串和子路径名创建新的File实例
  • public File(File parent,stirng child):从抽象路径名和子路径名字符串创建新的File实例
  • 构造举例:
//字符串文件路径名String pathname = "D:fenglinaaa.txt";File file = new File(pathname);//父路径字符串和子路径字符串String parent = "D:fenglin";String child = "bbb.txt";File file1 = new File(parent,child);//父抽象路径和子路径字符串File parentFile = new File("D:fenglin");String child1 = "ccc.txt";File file2 = new File(parentFile,child1);

注意:

1、一个File对象代表硬盘中实际存在的一个文件或目录

2、无论该路径下是否存在文件或者目录,都不影响File对象的创建

1.3 常用方法

  • public string getAbsolutePath():返回此File的绝对路径名称字符串
  • public string getPath():返回此File的路径名称字符串
  • public string getName():返回此File的文件或目录名称
  • public long length():返回此File表示的文件的长度

1.3.1 获取判断功能的方法

public boolean exists ():此File表示的文件或目录的是否实际存在public boolean isDirectory():此File表示的是否是目录public boolean isFile():此File表示的是否是文件

1.3.2 创建、删除功能的方法

public boolean createNewFile():当且仅当具有该名称的文件不存在时,创建一个新的空文件public boolean delete():删除由此File表示的文件或者目录public boolean mkdir():创建由此File表示的目录public boolean mkdirs():创建此File表示的目录,包括任何必需但不存在的父目录

1.4 目录的遍历

  • public String[] list():返回一个string数组,表示该File目录中的所有子文件和目录
  • public File[] listFiles():返回一个file数组,表示该File目录中的所有子文件或目录

2.1 概述

  • 递归:指当前方法内调用自己的这种现象
  • 递归的分类:
  • 递归分为两种:直接递归和间接递归
  • 直接递归:方法自身调用自己
  • 间接递归:可以A方法调用B方法,B方法调用C方法,C方法调用A方法
  • 注意事项:
  • 递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出
  • 在递归中虽然有限定条件,但是递归次数不能太多,否则也会发生栈内存溢出
  • 构造方法,禁止递归

2.2 递归累加求和

@Testpublic void  test() throws IOException {    int num = 5;    System.out.println(getSum(num));}public static int getSum(int num){    if(num == 1){        return 1;    }    return num + getSum(num -1);}

2.3 递归求阶乘

  • 所有小于及等于该数的正整数的积;
  • n!:n*(n-1)*...*3*2*1;
@Testpublic void  test() throws IOException {    int num = 5;    System.out.println(getSum(num));}public static int getSum(int num){    if(num == 1){        return 1;    }    return num * getSum(num -1);}

3 文件过滤器优化

Java.io.FileFilter是一个接口,是File的过滤器。该接口的对象可以传递给File类的listFiles(Filefilter)作为参数,接口中只有一个方法

  • public accept(File pathname):测试pathname是否应该包含在当前file目录中,符合则返回true
  • 分析
  • 接口作为参数,需要传递子类对象,重写其中方法,选择匿名内部类方式,比较简单
  • accept方法,参数为File,表示当前目录的子文件或子目录,保留住则返回true,过滤返回false
  • 过滤器作用:listFiles(FileFilter)返回的数组元素中,子文件对象都是符合条件的,可以直接打印。
  • 代码:
public class DiGuiDemo4 {public static void main(String[] args) {File dir = new File("D:aaa");printDir2(dir);}public static void printDir2(File dir) {// 匿名内部类方式,创建过滤器子类对象File[] files = dir.listFiles(new FileFilter() {    @Override    public boolean accept(File pathname) {    return pathname.getName().endsWith(".java")||pathname.isDirectory();  }});// 循环打印for (File file : files) {if (file.isFile()) {System.out.println("文件名:" + file.getAbsolutePath());} else {printDir2(file);}}}}