JAVA基础之File类的使用

本文详细介绍了Java中File类的基本用法,包括创建文件和文件夹、递归搜索文件夹及文件、过滤特定类型的文件、复制文件夹等内容,并提供了具体的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JAVA——File类的常见使用形式有以下几种

  1. 创建指定路径的File类,根据File类创建文件和文件夹
  2. 递归搜索某个文件夹下所有的文件夹和文件,遍历输出所有文件/统计文件夹大小
  3. 递归搜索某个文件夹下所有的文件夹和文件,遍历输出以.bp结尾的文件/统计文件夹大小
  4. 过滤当前路径下所有满足条件的文件或者文件夹,使用Filter过滤器
  5. 复制文件夹(递归)

  • 创建指定路径的File类,根据File类创建文件和文件夹
    //创建指定路径的File类,根据File类创建文件和文件夹
    public void create() throws IOException{
        File file1 = new File("FileDir");
        File file = new File("FileDir/xx.txt");

        if(file1.mkdir()){
            System.out.println("创建文件夹成功");
        }
        if(file.createNewFile()){       
            System.out.println("创建文件成功");
        }
    }

  • 递归搜索某个文件夹下所有的文件夹和文件,遍历输出所有文件/统计文件夹大小
    //递归搜索某个文件夹下所有的文件夹和文件,遍历输出所有文件/统计文件夹大小

    public long serchFileAndSubFileSize(File file){

        File[] filelist = file.listFiles();
        long fileLenth = 0;
        for (int i = 0; i < filelist.length; i++) {
            File fileTem = filelist[i];
            if(fileTem.isFile()){
                System.out.print(" 找到文件: "+fileTem.getName());
                fileLenth += fileTem.length();
            }
            else if(fileTem.isDirectory())
            {
                System.out.print("\n发现目录: "+fileTem.getName());
                serchFileAndSubFileSize(fileTem);
            }
        }
        return fileLenth;
    }

  • 递归搜索某个文件夹下所有的文件夹和文件,遍历输出以.bp结尾的文件/统计文件夹大小
//递归搜索某个文件夹下所有的文件夹和文件,遍历输出以.bp结尾的文件/统计文件夹大小

    public long serchBpFileAndSubFileSize(File file){

        File[] filelist = file.listFiles();
        long fileLenth = 0;
        for (int i = 0; i < filelist.length; i++) {
            File fileTem = filelist[i];
            if(fileTem.isFile()&&fileTem.getName().endsWith(".bp")){
                System.out.print(" 找到.bp文件:-"+fileTem.getName());
                fileLenth += fileTem.length();
            }
            else if(fileTem.isDirectory())
            {   
                    System.out.print("\n发现目录: "+fileTem.getName()+"::::");
                    fileLenth+=serchBpFileAndSubFileSize(fileTem);
            }
        }
        return fileLenth;
    }

  • 过滤当前路径下所有满足条件的文件或者文件夹,使用Filter过滤器
        //过滤当前路径下所有满足条件的文件或者文件夹,使用Filter
        public void outSpecialFile(){
            File file = new File("FileDir");
            File[] fileList = file.listFiles(new FilenameFilter() {
                @Override
                public boolean accept(File file, String fileName) {
                    File wholeFile = new File(file, fileName);//file代表父目录,fileName代表文件名
                    if(wholeFile.isFile()&&wholeFile.getName().endsWith(".txt")){
                        return true;
                    }
                    return false;
                }
            });

  • 复制文件夹(递归)
    //复制文件夹(递归)
    public void copyDirectoryToDirectory(File sourceFile, File goalFile) throws Exception{

        File goaldir = new File(goalFile,sourceFile.getName());   
        goaldir.mkdir();//在目标文件夹下创建一个与源文件夹名字相同的空白文件夹                                     
        File[] arr = sourceFile.listFiles();

        for (File file : arr) {
            if(file.isFile()){
                BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
                BufferedOutputStream bos  = new BufferedOutputStream(new FileOutputStream(new File(goaldir,file.getName())));
                int buffer;
                while((buffer=bis.read())!=-1){
                    bos.write(buffer);
                }
                bis.close();
                bos.close();
            }
            else if(file.isDirectory()){
                copyDirectoryToDirectory(file, goaldir);
            }
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值