File文件类学习总结

常用方法:

package com.example.test;

import org.junit.jupiter.api.Test;

import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;

public class TestFile {
    @Test
    public void testFile1(){
        System.out.println(Arrays.toString(File.listRoots()));

        String filePath1="D:\\testFile";
        File f1 = new File(filePath1);

        String filePath2="D:\\testFile\\aaa.txt";
        File f2 = new File(filePath2);

        String filePath3="dao\\TestCustomerDao.java";
        File f3 = new File(filePath3);
        System.out.println(f1.exists());
        System.out.println(f1.isFile());
        System.out.println(f1.isDirectory());


        //file.length这个方法只能用于获取文件的大小,无法获取文件夹的大小 (单位:字节)
        System.out.println("文件夹大小:"+f1.length());
        System.out.println("文件大小:"+f2.length());

        /*
            getPath:返回new file(??)里面的路径
            getAbsolutePath:返回绝对路径
         */
        System.out.println("文件定义时使用的路径:"+f3.getPath());
        System.out.println("返回绝对路径:"+f3.getAbsolutePath());
        System.out.println("返回文件名(带后缀):"+f3.getName());
        System.out.println("最后一次修改:"+new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date(f2.lastModified())));
    }
    @Test
    public void testFile2() throws IOException {
        /*
            createNewFile    没办法顺带创建文件夹(父级路径不存在报IOException)
            mkdir            创建单级文件夹
            mkdirs           创建多级文件夹
            delete           删除文件或空文件夹
         */
        String filePath="D:\\testFile\\vv.txt";
        File f1 = new File(filePath);
        System.out.println(f1.createNewFile());

        File f2 = new File("D:\\testFile\\ddd");
        System.out.println(f2.mkdir());

        File f3 = new File("D:\\testFile\\eee\\aa\\a.txt");//创了一个名为a.txt的文件夹 😂
        System.out.println(f3.mkdirs());

        f3.delete();//删除了名为a.txt的文件夹

    }
    @Test
    public void testFile3(){
        /*
        listFiles方法
            当调用者File表示的路径:
                                不存在时              返回null
                                是文件时              返回null
                                是空文件夹            返回长度为0的数组
                                是有内容的文件夹时      返回当级文件夹里面所有的文件和文件夹
                                是有隐藏文件的文件夹时   返回当级文件夹里面所有的文件和文件夹,包括隐藏文件
                                是需要权限的文件夹时     返回null
         */
        File f1 = new File("D:\\testFile");
        File[] files = f1.listFiles();
        for (File file : files) {
            System.out.println(file);
        }
    }

    @Test
    public void testFile4() {
        File file = new File("C:\\Users\\chen\\Desktop\\反射.xmind");
        long l = file.lastModified();
        Date date = new Date(l);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateString = sdf.format(date);
        System.out.println(dateString);
    }


}

常用方法练习:

得到一个文件夹内所有的txt文件的文件名

package com.example.testFile;

import java.io.File;
import java.util.ArrayList;

public class demo01 {

    //得到一个文件夹内所有的txt文件的文件名
    public static ArrayList<String> getAllTxt(String path){
        ArrayList<String> fileList = new ArrayList<>();
        File file = new File(path);
        File[] files = file.listFiles();
        for (File f : files) {
            if (f.isFile()&&f.getName().endsWith(".txt")){
                fileList.add(f.getName());
            }
            else {
                ArrayList<String> sonList = getAllTxt(f.getAbsolutePath());
                fileList.addAll(sonList);
            }
        }
        return fileList;
    }

    public static void main(String[] args) {
        ArrayList<String> allTxt = demo01.getAllTxt("D:\\testFile");
        System.out.println(allTxt);
    }
}

删除多级文件夹(包括它本身和它里面的所有内容)

package com.example.testFile;

import java.io.File;

public class demo02 {

    public static void deleteSrc(File src){
        //删除多级文件夹(包括它本身和它里面的所有内容)
        //delete只能删除文件和空文件夹
        File[] files = src.listFiles();
        for (File file : files) {
            if (file.isFile()){
                file.delete();
            }
            else {
                deleteSrc(file);
            }
        }
        src.delete();//最后删除自己
    }

    public static void main(String[] args) {
        demo02.deleteSrc(new File("D:\\testFile\\eee"));
    }
}

返回文件夹的大小

package com.example.testFile;

import java.io.File;

public class demo03 {
    public static long getLength(File path){
        //返回文件夹的大小
        long len=0;
        File[] files = path.listFiles();
        for (File file : files) {
            if (file.isFile()){
                len=len+file.length();
            }
            else {
                len=len+getLength(file);
            }
        }
        return len;

    }
    public static void main(String[] args) {
        long length = demo03.getLength(new File("D:\\testFile\\bbb"));
        System.out.println(length);
    }
}

分类统计一个文件夹内不同拓展名的文件的数量

package com.example.testFile;

import java.io.File;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class demo04 {
    static HashMap<String, Integer> map = new HashMap<>();
    //分类统计一个文件夹内不同拓展名的文件的数量
    public static Map<String,Integer> classifySrc(File src){

        File[] files = src.listFiles();
        for (File file : files) {
            if (file.isFile()){
                String[] split = file.getName().split("\\."); //需要转义
                String fileType=split[split.length-1];
                if(map.containsKey(fileType)){
                    map.put(fileType,map.get(fileType)+1);
                }
                else {
                    map.put(fileType,1);
                }
            }
            else {
                classifySrc(file);
            }
        }
        return map;
    }

    public static void main(String[] args) {
        Map<String, Integer> map = demo04.classifySrc(new File("D:\\rabbitMQ"));
        map.forEach((k,v)->{
            System.out.println(k+":"+v);
        });
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值