Java之File类相关知识

File类

1、说明

File类用于封装一个路径,这个路径可以是从系统盘符开始的绝对路径,也可以是相对于当前目录而言的相对路径。封装的路径可以指向一个文件,也可以指向一个目录,在File类中提供了针对这些文件或目录的一些常规操作。

2、File相关代码

/**
*File: Java中的File类可以将文件或文件夹的路径,封装成对象。并通过代码,对这些文件或文件夹对象,进行操作。
*相对路径:相对于当前项目下的文件或文件夹。
*绝对路径:从盘符的根目录开始,一直指向到某个具体的文件。
*/
public static void main(String[] args){
    File file = new File("D:\\c.flv");
    System.out.println(file.exists());

    File file2 = new File("bbb");
    System.out.println(file2.exists());
}

3、File类常用构造方法

方法声明 功能描述
File(String pathname) 通过指定的一个字符串类型的文件路径来创建一个新的File对象
File(String parent,String child) 根据指定的一个字符串类型的父路径和一个字符串类型的子路径(包括文件名称)创建一个File对象
File(File parent,String child) 根据指定的File类的父路径和字符串类型的子路径(包括文件名称)创建一个File对象

4、构造方法的相关代码

public static void main(String[] args){
File f1 = new File(“D:”,“a.flv”);
System.out.println(f1.exists());

//File(String parent,String child)
File f2 = new File(new File("D:"),"a.flv");
System.out.println(f2.exists());

}

5、File类的普通方法

public class Demo2_FileMethod{
    public static void main(String[] args){
    }


    private static void method4(){
        File f = new File("D:\\a.flv");
        
        //boolean isFile()  判断当前对象是否是文件
        System.out.println(f.isFile());

        //boolean isDirectory()  判断当前对象是否是文件夹
        System.out.println(f.isDirectory());
        
        System.out.println(f.isAbsolute());

        //long lastModified()   获取最后修改时间的毫秒值
        long time = f.lastModified();
        System.out.println(new Date(time));

        //long length()   返回文件大小
        long length = f.length();
        System.out.println(length);

    }

    private static void method3(){
        //boolean canRead()
        File f = new File("D:\\a.flv");
        System.out.println(f.canRead());

        //boolean canWrite()
        System.out.println(f.canWrite());

    }

    private static void method2(){
        File f = new File("D:\\a.flv");
        //1.getName()   获取文件\文件夹名称
        System.out.println(f.getName());

        //2.getPath()   获取对象构造方法中封装的路径
        System.out.println(f.getPath());

        //3.getAbsolutePath()   获取绝对路径
        System.out.println(f.getAbsolutePath());

        //4.getParent()    获取父级路径
        System.out.println(f.getParent());
    
    }

    public static void method1() throws IOException{
        //1.delete方法,删除文件或文件夹
        File f1 = new File("D:\\b.flv");
        System.out.println(f1.delete());

        //2.createNewFile(); 创建一个文件,返回是否创建成功
        System.out.println(f1.createNewFile());

    }
}

public class demo2_FileMethod{
        /**
        *  String[] list()     返回当前文件夹下所有的文件和文件夹名称
        *
        *  String[] list(FilenameFilter filter)   返回当前文件夹下所有的文件和文件夹名称,带有筛选效果
        *
        *  File[] listFiles()  返回当前文件夹下所有的文件和文件夹对象
        */

        public static void main(String[] args) throws IOException{
            File f = new File("D");
            File[] listFiles = f.listFiles();

            for(File file : listFiles){
                if(file.isDirectory()){
                 System.out.println(file.toString());
                 }
            } 
        
            private static void method5(){

            File f = new File("D:");

            String[] sArr = f.list(new FilenameFilter(){
                @Override
                public boolean accept(File dir, String name){
                    File ff = new File(dir,name);

                    return ff.isDirectory();
                }
            });

            for(String s : sArr){
                System.out.println(string);
            } 
        }
    
}

6、遍历目录下的文件

6.1 说明

File类中提供了一个重载的list(FilenameFilter filter)方法,该方法接收一个FilenameFilter接口类型的参数,其中定义了一个抽象方法accept(File dir,String name)用于依次对指定File的所有子目录进行迭代。

/**
*  String[] list()     返回当前文件夹下所有的文件和文件夹名称
*
*  String[] list(FilenameFilter filter)   返回当前文件夹下所有的文件和文件夹名称,带有筛选效果
*
*  File[] listFiles()  返回当前文件夹下所有的文件和文件夹对象
*/
public class Demo3_FileMethod{
    public static void main(String[] args){

    }
    
    public static void printFile(File dir){
        //1.获取传入文件夹下的所有文件和文件夹对象
        File[] files = dir.listFiles();
        //2.遍历数组,获取到每一个文件和文件夹对象
        for(File file : files){
            //3.如果是文件就打印该文件的名称
            if(file.isFile())
            {
                System.out.println(file.getName());
            }else if(file.isDirectory()){
                //4.如果是文件夹,就递归调用该方法
                if(file.listFiles()!=null){
                    printFile(file);
                }
            }
        }
    }

    private static void method2(){
        //筛选遍历扩展名“.txt”文件
        File f = new File("D:");
        if(f.isDirectory()){
            String[] sArr = f.list((dir,name)->name.endsWith(".txt"));
            Arrays.stream(sArr).forEach(System.out::println);
        }
    }

    private static void method1(){
        File f = new File("D:");
        if(f.isDirectory()){
            String[] sArr = f.list();
            Arrays.stream(sArr).forEach(System.out::println);
        } 
    }

}

7、删除文件及目录

/**
*
* delete : 该方法只能删除文件,或者空文件夹
*
*/
public class Demo_DelDir{
    public static void main(String[] args){
        File f = new File("F:\\测试数据");
        System.out.println(f.delete());
    }
}


//Java中的delete方法是不走回收站的,不要使用重要的数据进行测试
public class Demo_DelDir{
    public static void main(String[] args){
        del(new File("F:\\测试数据"));
    
    }

    public static void del(File dir){
        File[] listFiles = dir.listFiles();

        for(File file : listFiles){
            if(file.isFile()){
                //如果是文件,就可以直接删除
                file.delete();
            }else if(file.isDirectory()){
                //递归调用该方法
                if(file.listFiles()!=null){
                    del(file);
                }
            }

        }

        //当所有的文件都删除后,单独删除空文件夹
        dir.delete();
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊凯瑞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值