File 类的使用

  1. 利用File构造器,new 一个文件目录file
  1. 在其中创建多个文件和目录
  2. 编写方法,实现删除file中指定文件的操作
  1. 判断指定目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
  2. 遍历指定目录所有文件名称,包括子文件目录中的文件。
    拓展1:并计算指定目录占用空间的大小
    拓展2:删除指定文件目录及其下的所有文件

import org.junit.Test;
import java.io.File;
import java.io.IOException;

/**
 * @author young
 * @create 2021-11-03-19:43
 */
public class FileExer {

    @Test
    public void test() throws IOException {
        File file = new File("D:\\io\\io1\\hello.txt");
        File file1 = new File(file.getParent(),"hh.txt");
        File file2 = new File("D:\\io\\io1\\io5");
        if(!file1.exists()){
            file1.createNewFile();
            file2.mkdir();
            System.out.println("创建成功");
        }else {
            System.out.println("文件已存在");
        }
    }
    //判断指定目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
    /*
    public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组
	public File[] listFiles() :获取指定目录下的所有文件或者文件目录的File数组
    public String getName() :获取名称

     */
     
    @Test
    public void test1(){
        File file = new File("D:\\io\\io1\\io5");
        String[] list = file.list();
        for(String s : list){
            if(s.endsWith(".jpg")){
                System.out.println(s);
            }
        }
    }
    
    @Test
    public void test2(){
        File file = new File("D:\\io\\io1\\io5");
        File[] files = file.listFiles();
        for (File f : files) {
          if(f.getName().endsWith(".jpg")){
              System.out.println(f.getName());
          }
        }
    }
    /*
 遍历指定目录所有文件名称,包括子文件目录中的文件。
 拓展1:并计算指定目录占用空间的大小
 拓展2:删除指定文件目录及其下的所有文件

 public File[] listFiles() :获取指定目录下的所有文件或者文件目录的File数组
 public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组
 public boolean isDirectory():判断是否是文件目录
 public boolean isFile() :判断是否是文件
 public long length() :获取文件长度(即:字节数)。不能获取目录的长度
     */
    @Test
    public void test3(){
        FileExer fileExer = new FileExer();
        File file = new File("D:\\io");
        fileExer.printSubFile(file);
        System.out.println(fileExer.getDirectorySize(file));
        fileExer.deleteDirectory(file);
    }
    
    public void printSubFile(File dir){
        for (File file : dir.listFiles()) {
            if(file.isDirectory()){// 如果是文件目录
                printSubFile(file);
            }else {// 如果是文件
               System.out.println(file.getName());
            }
        }
    }
    
    public long getDirectorySize(File file) {
        // file是文件,那么直接返回file.length()
        // file是目录,把它的下一级的所有大小加起来就是它的总大小
        long size = 0;
        if(file.isFile()){
            size += file.length();
        }else {
            for (File f : file.listFiles()) {
                size += getDirectorySize(f);
            }
        }
        return size;
    }
    
    public void deleteDirectory(File file) {
        // 如果file是文件,直接delete
        // 如果file是目录,先把它的下一级干掉,然后删除自
        if(file.isDirectory()){
            // 循环删除的是file的下一级
            for(File f : file.listFiles()){// f代表file的每一个下级
                deleteDirectory(f);
            }
        }
        // 删除自己
        file.delete();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值