深入学习Java文件类File类(Demo详解)

举报
辰兮 发表于 2022/03/23 00:07:26 2022/03/23
【摘要】 【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、...

【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!

博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!

吾等采石之人,应怀大教堂之心,愿你们奔赴在各自的热爱中…


一、File类序言

Java 世界中【万物皆对象】,如何将一个实际磁盘文件或目录对应到一个 Java 对象呢?

Java 中使用 File 来抽象一个文件,无论是普通文件或是目录,都可对应于一个 File 对象。大家对于 File 这个类型的定位一定要准确:它只是抽象的代表了磁盘上的某个文件或目录,内部实际上是依赖一个平台无关的本地文件系统类,并且 File无法对其所表示文件内容进行任何读写操作(那是流做的事情)。

import java.io.File;

  
 
  • 1

首先我们要知道File类,归属于IO包中

基本概念:File类是文件和目录路径名的抽象表示形式,代表文件或者文件夹。


我们再一起回顾一下Java中的流的概念

在这里插入图片描述

1、“流”是一个抽象的概念,它是对输入输出设备的一种抽象理解,在java中,对数据的输入输出操作都是以“流”的方式进行的。

2、“流”具有方向性,输入流、输出流是相对的。当程序需要从数据源中读入数据的时候就会开启一个输入流,相反,写出数据到某个数据源目的地的时候也会开启一个输出流。

3、数据源可以是文件、内存或者网络等。

MultipartFile工具类讲解参考:MultipartFile工具类(方法详解)


二、File类讲解

File 类构造方法讲解

  • public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
  • public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
  • public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。

备注:

1. 一个File对象代表硬盘中实际存在的一个文件或者目录。
2. 无论该路径下是否存在文件或者目录,都不影响File对象的创建。


获取功能的方法

  • public String getAbsolutePath() :返回此File的绝对路径名字符串。

  • public String getPath() :将此File转换为路径名字符串。

  • public String getName() :返回由此File表示的文件或目录的名称。

  • public long length() :返回由此File表示的文件的长度。


绝对路径和相对路径

  • 绝对路径:从盘符开始的路径,这是一个完整的路径。
  • 相对路径:相对于项目目录的路径,这是一个便捷的路径,开发中经常使用。

判断功能的方法

  • public boolean exists() :此File表示的文件或目录是否实际存在。
  • public boolean isDirectory() :此File表示的是否为目录。
  • public boolean isFile() :此File表示的是否为文件。

创建删除功能的方法

  • public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
  • public boolean delete() :删除由此File表示的文件或目录。
  • public boolean mkdir() :创建由此File表示的目录。
  • public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。

具体的实践案例如下:创建对应的文件夹以及在文件夹下创建文件夹和文本
在这里插入图片描述

import lombok.SneakyThrows;

import java.io.File;

public class FileTest {
    @SneakyThrows
    public static void main(String[] args) {
        File file = new File("D:\\辰兮");
        File file1 = new File("D:\\辰兮\\2020");
        File file2 = new File("D:\\辰兮","2021");
        File file3 = new File("D:\\辰兮","2020反思.txt");
        File file4 = new File("2020反思.txt");
        System.out.println("输出file:"+file);
        System.out.println("输出file1:"+file1);
        System.out.println("输出file2:"+file2);
        System.out.println("输出file3:"+file3);
        System.out.println("================================");
        System.out.println("file名称:"+ file.getName());
        System.out.println("file3名称:"+ file3.getName());
        System.out.println("file4名称:"+ file4.exists());
        System.out.println("================================");
        System.out.println("file是否为存在:"+ file.exists());
        System.out.println("file3是否为存在:"+ file3.exists());
        System.out.println("file4是否为存在:"+ file4.exists());
        System.out.println("================================");
        System.out.println("file是否是文件:"+ file.isFile());
        System.out.println("file3是否是文件:"+ file3.isFile());
        System.out.println("file4是否是文件:"+ file4.isFile());
        System.out.println("================================");
        System.out.println("file是否为绝对路径:"+ file.isAbsolute());
        System.out.println("file3是否为绝对路径:"+ file3.isAbsolute());
        System.out.println("file4是否为绝对路径:"+ file4.isAbsolute());
        System.out.println("================================");
        System.out.println("file是否是目录:"+ file.isDirectory());
        System.out.println("file3是否是目录:"+ file3.isDirectory());
        System.out.println("================================");
        System.out.println("file获取标准路径:"+ file.getCanonicalPath());
        System.out.println("file3获取标准路径:"+ file3.getCanonicalPath());
        System.out.println("================================");
        System.out.println("file文件长度:"+ file.length());
        System.out.println("file3文件长度:"+ file3.length());
        System.out.println("================================");
    }
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

输出结果

输出file:D:\辰兮
输出file1:D:\辰兮\2020
输出file2:D:\辰兮\2021
输出file3:D:\辰兮\2020反思.txt
================================
file名称:辰兮
file3名称:2020反思.txt
file4名称:false
================================
file是否为存在:true
file3是否为存在:true
file4是否为存在:false
================================
file是否是文件:false
file3是否是文件:true
file4是否是文件:false
================================
file是否为绝对路径:true
file3是否为绝对路径:true
file4是否为绝对路径:false
================================
file是否是目录:true
file3是否是目录:false
================================
file获取标准路径:D:\辰兮
file3获取标准路径:D:\辰兮\2020反思.txt
================================
file文件长度:0
file3文件长度:15
================================

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

关于文件类的打印

//文件类的打印方法,就是打印其路径
    public String toString() {
        return getPath();
    }

  
 
  • 1
  • 2
  • 3
  • 4

目录的遍历

  • public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。

  • public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。

在这里插入图片描述

import lombok.SneakyThrows;

import java.io.File;

public class FileTest {
    @SneakyThrows
    public static void main(String[] args) {
        File file = new File("D:\\辰兮");
        //获取当前目录下的文件以及文件夹的名称。
        String[] names = file.list();
        for(String name : names){
            System.out.println(name);
        }
        //获取当前目录下的文件以及文件夹对象,只要拿到了文件对象,那么就可以获取更多信息
        File[] files = file.listFiles();
        for (File fileDetail : files) {
            System.out.println(fileDetail);
        }
    }
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
2020
2020反思.txt
2021
D:\辰兮\2020
D:\辰兮\2020反思.txt
D:\辰兮\2021

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

总结一下: list()方法返回的是一个string数组,就是对应文件或文件夹的名称,listFiles()返回的是File对象,所以打印出来走的file类的toString方法结果如上。


注意事项:

1.如果构造方法中给出的目录的路径不存在,会抛出空指针异常
2.如果构造方法中给出的路径不是一个目录,也会抛出空指针异常

Exception in thread "main" java.lang.NullPointerException
	at com.bcqn.controller.FileTest.main(FileTest.java:13)

  
 
  • 1
  • 2

The best investment is to invest in yourself.

非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤️ 分享👥 留言💬thanks!!!

2021.01.17 21:02 祝大家在新的一年有更多的进步,愿你们奔赴在自己的热爱里!

文章来源: blessing.blog.csdn.net,作者:辰兮要努力,版权归原作者所有,如需转载,请联系作者。

原文链接:blessing.blog.csdn.net/article/details/112757579

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。