002-File

第四阶段 IO

File类

我们想要实现IO的操作,就必须知道硬盘上文件的表现形式

(一) 概述及构造方法

(1) 概述

File:文件和目录(文件夹)路径名的抽象表示形式,并不代表一定存在

(2) 构造方法

//根据一个路径得到File对象(一般用这个)
File(String pathname)

//根据一个目录和一个子文件/目录得到File对象(也就是说,parent是文件夹,child代表这个文件夹里面的文件或者子文件夹)
File(String parent, String child)

//根据一个父File对象和一个子文件/目录得到File对象
File(File parent, String child)

(二) 功能

(1) 创建功能

//创建文件,如果存在这样的文件,就不创建
public boolean createNewFile()

//创建文件夹,如果存在这样的文件夹,就不创建了
public boolean mkdir()

//创建多级文件夹
public boolean mkdirs()

(2) 删除功能

Public boolean delete()

注意:

A:如果你创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下。

B:Java中的删除经过回收站

C:要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹

(3) 重命名功能

public boolean renameTo(File dest)

注意;

A:如果路径名相同,就是改名

B:如果路径名不相同,就是改名并剪切

(4) 判断功能

//判断是否是目录
public boolean isDirectory()

//判断是否是文件
public boolean isFile()

//判断是否存在
public boolean exists()

//判断是否可读
public boolean canRead()

//判断是否可写
public boolean canWrite()

//判断是否隐藏
public boolean isHidden()

(5) 获取功能

基本获取功能
//获取绝对路径
public String getAbsolutePath()

//获取相对路径
public String getPath()

//获取名称
public String getName()

//获取长度,字节数
public long length()

//获取最后一次修改时间,毫秒值
public long lastModified()
高级获取功能
//获取指定目录下的所有文件或者文件夹的名称数组
public String[] list()

//获取指定目录下的所有文件或者文件夹的file数组
public File[] listFiles()

(三) 经典案例

案例 (一) 输出指定目录下指定后缀名的文件名称案例

import java.io.File;

/*
 *  判断F盘目录下有没有后缀名为.txt的文件 如果有则输出
 *  分析:
 *      A: 封装 F 判断目录
 *      B:获取该目录下的所有文件或文件夹 File数组
 *      C:遍历该File数组,获取每一个File对象,然后判断
 *      D:是否是文件
 *            是:是否是.txt文件
 *                  是:输出文件名称
 *                  否:不做处理
 *            否:不做处理
 */

public class FileDemo {
    public static void main(String[] args) {
        File file = new File("F:\\");
        File[] fillArray = file.listFiles();
        for (File f : fillArray){
            if (f.isFile()){
                if (f.getName().endsWith(".txt"));
                System.out.println(f.getName());
            }
        }
    }
}

案例(二)文件过滤器改进输出指定目录下指定后缀名的文件名称案例

import java.io.File;
import java.io.FilenameFilter;

/*
 *  案例 (二) 文件过滤器改进输出指定目录下指定后缀名的文件名称案例
 *  判断F盘目录下有没有后缀名为.txt的文件 如果有则输出
 *      A:先获取所有的,然后遍历的时候依次判断 ,如果满足条件就输出
 *      B:获取的时候已经是满足条件的了,然后输出即可
 *
 *  接口:文件名称过滤器
 *      public String[] list(FilenameFilter filter)
 *      public File[] listFiles(FilenameFilter filter)
 */

public class FileDemo2 {
    public static void main(String[] args) {
        File f = new File("f:\\");
        String[] strArray = f.list(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                File file = new File(dir, name);
                boolean flag = file.isFile();
                boolean flag2 = name.endsWith(".txt");
                return flag && flag2;
                //是否将内容添加到数组中取决于这里的返回值
            }
        });

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


重写方法中可以优化为:
return new File(dir, name).isFile() && name.endWith(".txt");

结尾:

如果内容中有什么不足,或者错误的地方,欢迎大家给我留言提出意见, 蟹蟹大家 !^_^

如果能帮到你的话,那就来关注我吧!(系列文章均会在公众号第一时间更新)

在这里的我们素不相识,却都在为了自己的梦而努力 ❤

一个坚持推送原创Java技术的公众号:理想二旬不止


   转载规则


《002-File》 BWH_Steven 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录