声明:该专栏本人重新过一遍java知识点时候的笔记汇总,主要是每天的知识点+题解,算是让自己巩固复习,也希望能给初学的朋友们一点帮助,大佬们不喜勿喷(抱拳了老铁!)
往期回顾
Java学习day16:内部类、map集合(知识点详解)-CSDN博客
Java学习day15:Object类、set集合(知识点+例题详解)_java set集合编程题-CSDN博客
Java学习day14:权限修饰符,集合(知识点+例题详解)-CSDN博客
是专门用来显示出来磁盘上面的文件或者文件夹的,之前都是手动创建,现在可以借助Java封装好的类创建文件夹和文件。
为什么要通过代码去创建?
很简单,比如我们给客户做一个项目,获取数据后需要导出成execl文件在用户电脑里,这个时候我们不可能说让用户自己创建,肯定是需要代码直接操作创建的。
比如写了一个外卖系统管理后端,提供了一个功能可以一键导出外卖数据,生成excle表格。
得有一个参照物。
./ | 当前工作目录 |
../ | 上一级路径的目录 |
../../ | 上两级目录 |
磁盘的根路径一级一级的往下找。比如:C:\ccc\ddd\1.png。
File(String pathname) | 通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。 |
File(String parent, String child) | 从父路径名字符串和子路径名字符串创建新的File实例。 |
示例:
import java.io.File;
public class Demo1 {
public static void main(String[] args) {
//可以将1.txt 抽象成一个Java代码的对象
File file = new File("c:/aaa/1.txt");
File file2 = new File("c:\\aaa\\1.txt");
System.out.println(File.separator);
//为了保证你的代码在任意的系统下面 路径的分割符是都可以使用
//可以咋写代码?
File file3 = new File("c:" + File.separator + "aaa" + File.separator + "1.txt");
System.out.println(file3);
System.out.println("=====");
System.out.println(file);
//File(String parent, String child)
File file1 = new File("c:/aaa/", "1.txt");
System.out.println(file1);
}
}
Java中 看系统
1./ 在windows系统和linux 都是可以的!!!
2.\ 只有在windows系统下面可以的 而且需要使用转义字符\
static String separator
与系统相关的默认名称 - 分隔符字符,以方便的方式表示为字符串。
当你是window系统的时候 就是\
当你的代码在linux /
boolean createNewFile(); | 创建一个文件 返回值是布尔类型的数据 |
boolean mkdir(); | 创建单级路径 |
boolean mkdirs(); | 创建多级路径 |
区分单机路径和多级路径,单机路径就是说,在指定的文件目录下去创建一个目录,而多级呢,就是说先在指定路径创建一个文件夹,再在这个文件夹里又创建一个文件夹,这就是多级路径
创建文件的三个方法都是boolen类型
1.如果文件路径不存在会报错
2.如果文件名字已经存在,返回false
3.磁盘坏了,创建不了
示例:
import java.io.File;
import java.io.IOException;
public class Demo2 {
public static void main(String[] args) throws IOException {
File file = new File("c:/aaa/1.txt");
System.out.println(file.createNewFile());
File file1 = new File("c:/aaa/bbb");
System.out.println(file1.mkdir());//单级路径
File file2 = new File("c:/aaa/ccc/ddd");
System.out.println(file2.mkdirs());//多级路径
}
}
boolean delete(); | 立即删除文件,常用的 |
void deleteOnExit(); | 不会立即删除,是程序退出以后才删除的 |
示例:
import java.io.File;
import java.util.Scanner;
public class Demo3 {
public static void main(String[] args) {
File file = new File("c:/aaa/1.txt");
System.out.println(file.delete());
//删除一个非空的文件夹,是删除不了的,咋办?递归
File file1 = new File("c:/aaa/ccc");
System.out.println(file1.delete());
File file2 = new File("c:/aaa/bbb");
System.out.println(file2.delete());
File file3 = new File("c:/aaa/ccc/ddd");
file3.deleteOnExit();
//如果保证程序不退出
new Scanner(System.in).nextInt();
}
}
例题:
删除某一个目录下面的所有的文件
当你不知道你有多少个文件夹和文件的时候,咱们可以递归的
import java.io.File;
public class Demo9 {
public static void main(String[] args) {
File file = new File("c:/aaa/bbb");
del(file);
}
public static void del (File file) {
//所有文件先取出来
File[] files = file.listFiles();
/**
* c:\aaa\bbb\1.txt
* c:\aaa\bbb\ddd
* file1是ddd 是文件夹
* 1.txt删除了
* 再次执行del(file1) ddd文件夹
* eee
* 2.txt
* 再次执行del(eee) eee文件夹了
*/
for (File file1 : files) {
System.out.println(file1);
if (file1.isDirectory()) {//是文件夹
del(file1);//递归
}else {//是文件
file1.delete();
}
}
}
}
boolean isFile(); | 是否是文件【常用】 | |
boolean isDirectory(); | 是否是文件夹【常用】 | |
boolean isHidden(); | 是否是隐藏文件 | 右键单击文件-属性-隐藏 文件夹里查看-显示-隐藏的项目 有时候还挺好玩的 |
boolean isAbsolute(); | 是否是绝对路径 | |
boolean exists(); | 判断文件或者文件夹是否存在【重要】 | 用在if语句,先判断是否存在,再看要不要创建 |
示例:
import java.io.File;
import java.io.IOException;
public class Demo4 {
public static void main(String[] args) throws IOException {
File file = new File("c:/aaa");
System.out.println(file.isFile());//false
File file1 = new File("c:/aaa/2.gif");
System.out.println(file1.isFile());//true
System.out.println(file.isDirectory());//true
System.out.println(file1.isDirectory());//false
File file2 = new File("c:/aaa/2.txt");
System.out.println(file2.isHidden());//true
System.out.println(file1.isHidden());//false
System.out.println(file.isAbsolute());//true
File file3 = new File("./");
System.out.println(file3.isAbsolute());//false
System.out.println(file1.exists());//true
if (!file1.exists()) {
file1.createNewFile();
}
}
}
String getName(); | 获取文件或者文件夹的名字的 |
String getPath(); | 获取当前对象的路径的 |
String getParent(); | 获取当前文件对象的上一级的目录 |
示例:
import java.io.File;
public class Demo5 {
public static void main(String[] args) {
File file = new File("c:\\aaa\\2.gif");
System.out.println(file.getName());//2.gif
System.out.println(file.getParent());//c:\aaa
System.out.println(file.getPath());//c:\aaa\2.gif
System.out.println(file);//c:\aaa\2.gif
}
}
这里会发现最后两个打印的结果是一样的,但是本质上是完全不同的,一个是file对象,可以调用File类下面的方法,一个是String对象,可以调用String类下面的方法,本质上的区别
long length(); | 返回值是文件占用的字节数 | |
long lastModified(); | 获取当前文件最后一次修改的时间 | 是从1970 1月1日 0时 0分 0 秒开始到文件修改时间的毫秒数,/1000以后变成时间戳 |
示例:
import java.io.File;
public class Demo6 {
public static void main(String[] args) {
File file = new File("c:/aaa/8.txt");
System.out.println(file.length());//48
//1659687558179
//从1970 1月1日 0时 0分 0 秒 ~ 2022 8 5 16:19
//的毫秒数
System.out.println(file.lastModified());
}
}
File[] listFiles(); | 获取当前文件夹下面的所有的文件 | 获取的是File对象 |
String[] list(); | 获取当前文件夹下面的所有文件的名字 | 获取的是String类型数据 |
示例:
import java.io.File;
public class Demo7 {
public static void main(String[] args) {
File file = new File("c:/");
File[] files = file.listFiles();
for (File file1 : files) {
//列出来的是对象 File
System.out.println(file1);
}
System.out.println("=======");
String[] list = file.list();
for (String s : list) {
//文件的名字
System.out.println(s);
}
}
}
1.File类下面的方法
createNewFile 创建一个新的文件
mkdir 创建一个单级的文件夹
mkdirs创建多级的文件夹
delete 删除文件或者文件夹
isFile 判断是否是文件
isDirectory 判断是否是文件夹
isHidden 判断是否是隐藏文件
isAbsolute 判断是否是绝对的路径
exists 判断文件是否存在(需要用的)
getName 获取文件或者文件夹的名字
getPath 获取当前file对象的路径的
getParent 获取当前文件的上一级目录
length 文件占用的字节数 byte
lastModified 获取当前文件被修改的时间 除以1000等于时间戳 本身返回值是毫秒数
listFile 返回值是File数组 将当前的文件夹下面的所有的文件或者文件夹返回一个File数组
list 返回值是String数组,将当前的文件夹下面的所有的文件或者文件夹String
以上,就是今天的所有知识点了。File类的常用方法比较多,但是都不算太难,大家得多花点时间,静下心记忆一下,不是什么大问题。
加油吧,预祝大家变得更强!