2022.5.5 I/O File类

File类

概念:代表物理盘符中的一个文件或者文件夹

createNewFile()//创建一个新文件
mkdir()//创建一个新目录
delete()//删除文件或空目录
exists()//判断File对象所对象所代表的对象是否存在
getAbsolutePath()//获取文件的绝对路径
getName ()//取得名字
getParent()//获取文件/目录所在的目录
isDirectory()//是否是目录
isFile()//是否是文件
length()//获得文件的长度
listFiles()//列出目录中的所有内容
renameTo()//修改文件名为

  • 分隔符

package com.xing.File;

import java.io.File;

public class Demo01 {
    public static void main(String[] args) {
        System.out.println(File.separator);//  路径分隔符 \
        System.out.println(File.pathSeparator);// 名称分隔符;
    }
}

  • 文件操作

package com.xing.File;

import java.io.File;
import java.io.IOException;
import java.util.Date;

public class Demo02 {
    public static void main(String[] args) throws IOException {
        //创建一个文件对象,但没有创建文件
        File file = new File("file.txt");//里面为相对路径
        if(!file.exists()){ // 是否存在  存在不创建  不存在则创建
            //创建文件
            boolean b = file.createNewFile();//返回值为boolean类型  true为创建成功
            System.out.println("创建结果"+b);
        }

        // 2. 删除文件
        // 2.1 直接删除
        System.out.println("删除结果"+file.delete()); // 成功返回true

        // 2.2 使用jvm退出时删除
        file.deleteOnExit();

        // 3. 获取文件信息
        System.out.println("获取绝对路径" + file.getAbsolutePath());//C:\Users\16159\Desktop\code\IO\file.txt
        System.out.println("获取路径" + file.getPath());//file.txt
        System.out.println("获取文件名称" + file.getName());//file.txt
        System.out.println("获取父目录" + file.getParent());
        System.out.println("获取文件长度" + file.length());//内容占多少字节
        //lastModified()返回long类型   转为时间类型
        System.out.println("文件创建时间" + new Date(file.lastModified()));//Thu May 05 10:19:06 GMT+08:00 2022

        // 4. 判断
        System.out.println("是否可写" + file.canWrite());
        System.out.println("是否是文件" + file.isFile());
        System.out.println("是否隐藏" + file.isHidden());
    }
}

 

 

 

  • 文件夹操作

package com.xing.File;

import java.io.File;
import java.util.Date;

public class Demo03 {
    public static void main(String[] args) {
        // 1. 创建文件夹对象
        File dir = new File("d:\\aaa\\bbb\\ccc");
        if(!dir.exists()){// 是否存在  存在不创建  不存在则创建
            //dir.mkdir(); // 只能创建单级目录
            dir.mkdirs(); // 创建多级目录  返回boolean类型
            System.out.println("创建结果"+dir.mkdirs());
        }

//        // 2. 删除文件夹
//        // 2.1 直接删除
//        System.out.println("删除结果"+dir.delete()); // 只能删除最底层空文件夹
//        // 2.2 使用jvm删除
//        dir.deleteOnExit();

        // 3. 获取文件夹信息
        System.out.println("获取绝对路径" + dir.getAbsolutePath());
        System.out.println("获取路径" + dir.getPath());
        System.out.println("获取文件夹名称" + dir.getName());//ccc 最底层文件夹名称
        System.out.println("获取父目录" + dir.getParent());//d:\aaa\bbb 最底层文件夹父目录
        System.out.println("文件夹创建时间" + new Date(dir.lastModified()));

        // 4. 判断
        System.out.println("是否是文件夹" + dir.isFile());
        System.out.println("是否隐藏" + dir.isHidden());

        // 5. 遍历文件夹
        File dir2 = new File("d:\\aaa");
        String[] files = dir2.list();//list()返回值为字符串类型的数组
        //打印aaa文件夹中文件的名称
        for (String file : files) {
            System.out.println(file);
        }
    }
}

FileFilter接口(文件过滤器)

  • boolean accept(File pathname)

  • 当调用File类中的listFiles()方法时,支持传入FileFilter接口接口实现类,对获取文件进行过滤,只有满足条件的文件的才可出现在listFiles()的返回值中。

  • listFiles()方法是返回某个目录下所有文件和目录的绝对路径,返回的是File数组

package com.xing.File;

import java.io.File;
import java.io.FileFilter;
import java.util.Date;

public class Demo04 {
    public static void main(String[] args) {
        //遍历文件夹
        File dir = new File("d:\\aaa");
        //参数为FileFilter接口的实现类   返回值为File数组
        File[] files = dir.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                //这个文件   文件名     文件后缀
                if (pathname.getName().endsWith(".txt")) {
                    return true;//保留文件
                }
                return false;//不满足条件过滤掉
            }
        });

        for (File file : files) {
            System.out.println(file);
        }
    }
}

 

 

递归遍历、删除文件夹

package com.xing.File;

import java.io.File;

public class Demo05 {
    public static void main(String[] args) {
        //文件夹对象  file代表了aaa文件夹
        File file = new File("d:\\aaa");
        //listdir(file);
        deletedir(file);

    }
    //递归遍历文件夹
    //                        参数为遍历的文件夹名称
    public static void listdir(File dir) {
        File[] files = dir.listFiles();//返回某个目录下所有文件和目录的绝对路径,返回的是File数组
        System.out.println("文件夹路径"+dir.getAbsolutePath());
        if (files != null && files.length > 0) {//文件夹中有内容
            for (File file : files) {
                if (file.isDirectory()) {//如果下面还是文件夹   递归
                    listdir(file);
                }else {//文件打印
                    System.out.println(file.getAbsolutePath());
                }
            }
        }
    }

    //递归删除文件夹
    public static void deletedir(File dir){
        File[] files = dir.listFiles();
        if(files != null && files.length > 0){
            for(File file : files){
                if(file.isDirectory()){
                    deletedir(file); // 递归
                }else{
                    // 删除文件
                    System.out.println(file.getAbsolutePath() + "删除" + file.delete());
                }
            }
        }
        //删除文件夹
        System.out.println(dir.getAbsolutePath()+"删除"+dir.delete());
    }
}
 
posted @ 2022-05-06 10:07  暴躁C语言  阅读(21)  评论(0)    收藏  举报