深入学习Java文件类File类(Demo详解)
【辰兮要努力】: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
- 点赞
- 收藏
- 关注作者
评论(0)