File,,, 文件和文件夹的创建删除,,, listFiles()方法介绍,,,文件过滤器,,, 递归

     File

File.pathSeparator      //与系统有关的路径分隔符  ;
File.separator            //与系统有关的默认分隔符    
//封装file对象,不能检测文件是否存在
File file=new File("D:\io0512\a.txt");   
File file=new File("D:\io0512","a.txt");   
File file=new File("D:\io0512");
File file4=new File("src");
//获取文件绝对路径
file.getAbsolutePath();         //D:io0512a.txt
file4.getAbsolutePath();    //D:eclipse0512Day14src
//获取文件名
file.getName()    //a.txt
//获取路径
file4.getPath()      //src
//获取文件长度,长度是字节数,long类型
file.length()

               文件和文件夹的创建删除


File file=new File("D:\io0512\a.txt");
//创建空文件
boolean flag=file.createNewFile();
System.out.println(flag);
//判断文件是否存在
System.out.println(file.exists());
//判断是否是文件夹
System.out.println(file.isDirectory());
//判断是否是文件
System.out.println(file.isFile());
//删除文件
file.delete();
//创建文件夹
file.mkdir();
File file2=new File("D:\io0512\q\z\x\c");
//创建多级文件夹
boolean flag=file2.mkdirs();
System.out.println(flag);

 

                listFiles()方法介绍

注意:在获取指定目录下的文件或者文件夹时必须满足下面两个条件

1,指定的目录必须是存在的,

2,指定的必须是目录。否则容易引发返回数组为null,出现NullPointerException

public class FileMethodDemo3 {
    public static void main(String[] args) {
        File dir = new File("e:\java_code");
        //获取的是目录下的当前的文件以及文件夹的名称。
        String[] names = dir.list();
        for(String name : names){
            System.out.println(name);
        }
        //获取目录下当前文件以及文件对象,只要拿到了文件对象,那么就可以获取其中想要的信息
        File[] files = dir.listFiles();
        for(File file : files){
            System.out.println(file);
        }
    }
}

                文件过滤器

public class MyFilter implements FileFilter {

    @Override
    public boolean accept(File pathname) {
        
        //获取文件名
        String name=pathname.getName();
        //获取文件拓展名
        //转小写
        //判断文件是否以txt结尾
        return name.toLowerCase().endsWith(".txt");
    }

}
public static void main(String[] args) {
    File file=new File("D:\io0512");
    File[] files=file.listFiles(new MyFilter());
    for(File f:files){
        System.out.println(f);
    }

     递归

public static void main(String[] args) {
    System.out.println(a(3));
}
//递归计算1-100的和
public static int  a(int i){
    if(i==1){
        return 1;
    }else{
        return i+a(i-1);
    }
}

递归计算斐波那契数列(前两个数相加等于第三个数)

public static void main(String[] args) {
    System.out.println(get(12));
}
public static int get(int n){
    if(n==1||n==2){
        return 1;
    }
    return get(n-1)+get(n-2);
}

递归应用

递归查询所有文件

public class Demo03 {
public static void main(String[] args) {
    get(new File("D:\io0512"));
}
public static void get(File dir){
    //当前目录这一级的文件和文件夹对象数组
    File[] files=dir.listFiles();
    for(File i:files){
        if(i.isDirectory()){//如果file对象时文件夹,继续进行遍历
            System.out.println(i+"---");//打印文件夹
            get(i);
        }else{
        //如果不是打印
        System.out.println(i);//打印文件
        }
    }
}
}

递归查询所有以txt结尾的文件

public class Demo04 {
public static void main(String[] args) {
    get(new File("D:\io0512"));
}
public static void get(File dir){
    //当前目录这一集的文件和文件夹对象数组
    File[] files=dir.listFiles(new Zi());
    for(File i:files){
        if(i.isDirectory()){//如果file对象时文件夹,继续进行遍历
            //System.out.println(i+"---");//打印文件夹
            get(i);
        }else{
        //如果不是打印
        System.out.println(i);//打印文件
    }}
}
}
public class Zi implements FileFilter{

    
    public boolean accept(File pathname) {
        if(pathname.isDirectory()){
            return true;
        }
        String i=pathname.getName();
        return i.toLowerCase().endsWith(".txt");
    }

}
原文地址:https://www.cnblogs.com/111wdh/p/13396067.html