File类 --java学习笔记

本文详细介绍了在Java中使用File类进行数据存储的方法,包括内存中数据容器的特点、使用File类操作文件(如创建、判断类型、获取信息、删除和遍历文件夹)以及注意事项。
摘要由CSDN通过智能技术生成

在java中,存储数据一般有如下几种方法:

而它们都是内存中的数据容器
它们记住的数据,在断电,或者程序终止时会丢失

这种时候就可以使用File类和Io流,就数据存储在文件中

File

  • File是java.io.包下的类, File类的对象,用于代表当前操作系统的文件(可以是文件、或文件夹)
  • 注意:File类只能对文件本身进行操作,不能读写文件里面存储的数据

File对象的创建方法

File.separator:代替路径分隔符(/、\\...),跨平台

绝对路径、相对路径

  • 绝对路径:从盘符开始
  • 相对路径:不带盘符,默认直接到当前工程下的目录寻找文件

File提供的判断文件类型、获取文件信息功能

代码演示:

import java.io.File;
import java.text.SimpleDateFormat;

public class FileIoTest2 {
    public static void main(String[] args) {
        //1.创建文件对象,指代某个文件
        File f1 = new File("D:/File/dzy.txt");
        // 2、public boolean exists():判断当前文件对象,对应的文件路径是否存在,存在返回true.
        System.out.println(f1.exists());    //true
        // 3、public boolean isFile(): 判断当前文件对象指代的是否是文件,是文件返回true,反之。
        System.out.println(f1.isFile());    //true
        // 4、public boolean isDirectory() : 判断当前文件对象指代的是否是文件夹,是文件夹返回true,反之。
        System.out.println(f1.isDirectory());   //false
        // 5.public string getName():获取文件的名称(包含后缀)
        System.out.println(f1.getName());   //dzy.txt
        // 6.public long length():获取文件的大小,返回字节个数
        System.out.println(f1.length());    //9
        // 7.public long lastModified():获取文件的最后修改时间。
        long time = f1.lastModified();  //2024-03-21 21:23:18
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(sdf.format(time));
        // 8.public string getPath():获取创建文件对象时,使用的路径
        System.out.println(f1.getPath());   //D:\File\dzy.txt
        // 9.public string getAbsolutePath():获取绝对路径
        System.out.println(f1.getAbsolutePath());   //D:\File\dzy.txt
    }
}

运行结果:

File类创建文件的功能

File类删除文件的功能

注意:delete方法默认只能删除文件和空文件夹,删除后的文件不会进入回收站

代码演示:

import java.io.File;
import java.io.IOException;

public class FileIoTest3 {
    public static void main(String[] args) throws IOException {
        //1、public boolean createNewFile():创建一个新文件(文件内容为空),创建成功返回true,反之。
        File f1 = new File("D:/File/a.txt");
        System.out.println(f1.exists());    //false
        System.out.println(f1.createNewFile()); //true
        // 2、public boolean mkdir():用于创建文件夹,注意:只能创建一级文件夹
        File f2 = new File("D:/File/ddd");
        System.out.println(f2.mkdir());     //true
        // 3、public boolean mkdirs():用于创建文件夹,注意:可以创建多级文件夹
        File f3 = new File("D:/File/aaa/bbb/ccc");
        System.out.println(f3.mkdirs());    //true
        //3、public boolean delete():删除文件,或者空文件,注意:不能删除非空文件夹。
        System.out.println(f1.delete());    //true
        System.out.println(f2.delete());    //true
        File f4 = new File("D/File");
        System.out.println(f4.delete());    //false
    }
}

运行结果:

File类提供的遍历文件夹的功能

代码演示:

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

public class FileIoTest4 {
    public static void main(String[] args) throws IOException {
    //1、public string[] list():获取当前目录下所有的"一级文件名称"到一个字符串数组中去返回。
        File f1 = new File("D:/File");
        String[] list = f1.list();
        for (String s : list) {
            System.out.println(s);
        }
        System.out.println("-------------------------------------------");

        //2、public File[]listFiles():(重点)获取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回(重点)
        File[] files = f1.listFiles();
        for (File file : files) {
            System.out.println(file.getAbsolutePath());
        }
        System.out.println("-------------------------------------------");
        //通过递归和listFiles()遍历文件夹下每个文件
        Arrays.stream(files).forEach(f -> new FileAllName() {
            @Override
            public void AllName(File f) {
                System.out.println(f.getName());
                if(f.isDirectory()){
                    for (File file : f.listFiles()) {
                        AllName(file);
                    }
                }
            }
        }.AllName(f));
    }
}

interface FileAllName{
    void AllName(File f);
}

运行结果:

使用listFiles方法时的注意事项:

  • 当主调是文件,或者路径不存在时,返回null
  • 当主调是空文件夹时,返回一个长度为0的数组
  • 当主调是一个有内容的文件夹时,将里面所有一级文件和文件夹的路径放在File数组中返回
  • 当主调是一个文件夹,且里面有隐藏文件时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件
  • 当主调是一个文件夹,但是没有权限访问该文件夹时,返回null
  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A泽予

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值