欢迎光临
我们一直在努力

【Java基础复习】IO流(一)

【Java基础复习】IO流(一)

个人主页:https://github.com/zbhgis

前言

1.之前学过,因此本文是个人复习笔记,为视频的总结以及个人思考,可能不是很详细。

2.教程是b站黑马程序员的JAVASE基础课程,笔记中的大部分图片来自于视频中的PPT截图。

3.Java环境为Java SE 17.0.3.1,IntelliJ IDEA版本为2025.2

https://www.bilibili.com/video/BV1Cv411372m

内容概览

1.本文内容主要包括File类对象的创建,File类的常用api,以及递归实现文件搜索与非空文件夹删除。

2.笔记对应视频152-155节

更新记录

创建时间:2025.10 完成初步撰写

更新1:2026.03 补充目录,并添加个人github主页链接

File类对象创建

File是java.io.包下的类,File类的对象,用于代表当前操作系统的文件(可以是文件或文件夹)

img

Io1.java

package com.zbhgis.io;

import java.io.File;

public class Io1 {
public static void main(String[] args) {
// File f1 = new File("E:/AAAfile/gee_bakup/geeapp.js");
// File f1 = new File("E:\\\\AAAfile\\\\gee_bakup\\\\geeapp.js");
File f1 = new File("E:" + File.separator + "AAAfile" + File.separator + "gee_bakup" + File.separator + "geeapp.js");
System.out.println(f1.length());

File f2 = new File("E:/AAAfile");
System.out.println(f2.length());

File f3 = new File("E:/aaa");
System.out.println(f3.exists());
System.out.println(f3.length());
}
}

File的常用api

img

img

img

Io2.java

package com.zbhgis.io;

import java.io.File;
import java.io.IOException;
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;

public class Io2 {
public static void main(String[] args) throws IOException {
File f1 = new File("E:/AAAfile/gee_bakup/geeapp.js");

System.out.println(f1.exists());
System.out.println(f1.isFile());
System.out.println(f1.isDirectory());
System.out.println(f1.getName());
System.out.println(f1.length() / 1024.0);
Instant instant = Instant.ofEpochMilli(f1.lastModified());
System.out.println(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault()).format(instant));
System.out.println(f1.getPath());
System.out.println(f1.getAbsolutePath());
System.out.println(f1.getParent());

File f2 = new File("E:/AAAfile/gee_bakup/gee_test.js");
System.out.println(f2.createNewFile());

File f3 = new File("E:/AAAfile/gee_bakup/aaa/bbb");
System.out.println(f3.mkdir());

File f4 = new File("E:/AAAfile/gee_bakup/aaa/bbb");
System.out.println(f4.mkdirs());

System.out.println(f2.delete());
System.out.println(f4.delete());
File f5 = new File("E:/AAAfile/gee_bakup/");
System.out.println(f5.delete());
System.out.println();

File f6 = new File("E:/AAAfile/gee_bakup/aaa");
for (String name : f6.list()) {
System.out.println(name);
}
System.out.println();

for (File file : f6.listFiles()) {
System.out.println(file.getAbsolutePath());
}
System.out.println();

File f7 = new File("E:/AAAfile/gee_bakup/bbb");
System.out.println(f7.listFiles());

File f8 = new File("E:/AAAfile/gee_bakup/ccc");
System.out.println(Arrays.toString(f8.listFiles()));
}
}

打印结果

true
true
false
geeapp.js
10.7001953125
2025-10-19 09:49:07
E:\\AAAfile\\gee_bakup\\geeapp.js
E:\\AAAfile\\gee_bakup\\geeapp.js
E:\\AAAfile\\gee_bakup
true
true
false
true
true
false

a
aa.txt
b
bb.txt

E:\\AAAfile\\gee_bakup\\aaa\\a
E:\\AAAfile\\gee_bakup\\aaa\\aa.txt
E:\\AAAfile\\gee_bakup\\aaa\\b
E:\\AAAfile\\gee_bakup\\aaa\\bb.txt

null
[]

文件搜索与非空文件夹删除

递归实现

从形式上说:方法调用自身的形式称为方法递归。

直接递归:方法自己调用自己

间接递归:方法调用其他方法,其他方法又回调方法自己

Io3.java

package com.zbhgis.io;

import java.io.File;

public class Io3 {
public static void main(String[] args) {
searchFile("D:/Program Files/Tencent", "QQ.exe");
deleteFolder("E:/AAAfile/gee_bakup/ddd");
}

public static void searchFile(String dir, String fileName) {
File path = new File(dir);
if (path == null || !path.exists() || path.isFile()) {
return;
}

File[] files = path.listFiles();
if (files != null && files.length > 0) {
for (File file : files) {
if (file.isFile()) {
if (file.getName().contains(fileName)) {
System.out.println(file.getAbsoluteFile());
}
} else {
searchFile(String.valueOf(file), fileName);
}

}
}
}

public static void deleteFolder(String s) {
File folder = new File(s);
if (folder == null || !folder.exists()) {
return;
}

if (folder.isFile()) {
folder.delete();
return;
}

File[] files = folder.listFiles();
if (files == null) {
return;
}

for (File file : files) {
if (file.isFile()) {
file.delete();
} else {
deleteFolder(String.valueOf(file));
}
}
folder.delete();
}
}

打印结果

D:\\Program Files\\Tencent\\QQNT\\QQ.exe

总结

1.list()方法返回的结果是多个字符串的数组

listFiles()方法返回的结果是多个文件对象的数组

2.listFiles()方法

空文件夹调用返回长度为0的数组

不存在的文件调用返回null

3.在递归实现文件搜索与非空文件夹删除之前,要先确定不同遍历结果中可能出现的非正常值

赞(0)
未经允许不得转载:171主机测评 » 【Java基础复习】IO流(一)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址