当前位置:网站首页>File类学习笔记
File类学习笔记
2022-08-07 05:04:00 【易 尘】
File类学习笔记
1.1File类概述
java.io.File 类是⽂件和⽬录路径名的抽象表示,主要⽤于⽂件和⽬录的创建、查找和删除等操作。
1.2构造⽅法
public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。public File(String parent, String child) :从⽗路径名字符串和⼦路径名字符串创建新的 File实
例。public File(File parent, String child) :从⽗抽象路径名和⼦路径名字符串创建新的 File实例。
构造举例,代码如下:
// ⽂件路径名
String pathname = "D:\\aaa.txt";
File file1 = new File(pathname);
// ⽂件路径名
String pathname2 = "D:\\aaa\\bbb.txt";
File file2 = new File(pathname2);
// 通过⽗路径和⼦路径字符串
String parent = "d:\\aaa";
String child = "bbb.txt";
File file3 = new File(parent, child);
// 通过⽗级File对象和⼦路径字符串
File parentDir = new File("d:\\aaa");
String child = "bbb.txt";
File file4 = new File(parentDir, child);
- ⼩贴⼠:
- ⼀个File对象代表硬盘中实际存在的⼀个⽂件或者⽬录。
- ⽆论该路径下是否存在⽂件或者⽬录,都不影响File对象的创建。
1.3 常⽤⽅法
获取功能的⽅法
public String getAbsolutePath() :返回此File的绝对路径名字符串。public String getPath() :将此File转换为路径名字符串。public String getName() :返回由此File表示的⽂件或⽬录的名称。public long length() :返回由此File表示的⽂件的⻓度。
⽅法演示,代码如下:
public class FileGet {
public static void main(String[] args) {
File f = new File("d:/aaa/bbb.java");
System.out.println("⽂件绝对路径:"+f.getAbsolutePath());
System.out.println("⽂件构造路径:"+f.getPath());
System.out.println("⽂件名称:"+f.getName());
System.out.println("⽂件⻓度:"+f.length()+"字节");
File f2 = new File("d:/aaa");
System.out.println("⽬录绝对路径:"+f2.getAbsolutePath());
System.out.println("⽬录构造路径:"+f2.getPath());
System.out.println("⽬录名称:"+f2.getName());
System.out.println("⽬录⻓度:"+f2.length());
}
}
/*输出结果: ⽂件绝对路径:d:\aaa\bbb.java ⽂件构造路径:d:\aaa\bbb.java ⽂件名称:bbb.java ⽂件⻓度:636字节 ⽬录绝对路径:d:\aaa ⽬录构造路径:d:\aaa ⽬录名称:aaa ⽬录⻓度:4096 */
- API中说明:length(),表示⽂件的⻓度。但是File对象表示⽬录,则返回值未指定。
绝对路径和相对路径
- 绝对路径:从盘符开始的路径,这是⼀个完整的路径。
- 相对路径:相对于项⽬⽬录的路径,这是⼀个便捷的路径,开发中经常使⽤。
public class FilePath {
public static void main(String[] args) {
// D盘下的bbb.java⽂件
File f = new File("D:\\bbb.java");
System.out.println(f.getAbsolutePath());
判断功能的⽅法
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表示的⽬录,包括任何必需但不存在的⽗⽬录。
⽅法演示,代码如下:
// 项⽬下的bbb.java⽂件
File f2 = new File("bbb.java");
System.out.println(f2.getAbsolutePath());
}
}
/* 输出结果: D:\bbb.java D:\idea_project_test4\bbb.java */
判断功能的⽅法
public boolean exists() :此File表示的⽂件或⽬录是否实际存在。public boolean isDirectory() :此File表示的是否为⽬录。public boolean isFile() :此File表示的是否为⽂件。
⽅法演示,代码如下:
public class FileIs {
public static void main(String[] args) {
File f = new File("d:\\aaa\\bbb.java");
File f2 = new File("d:\\aaa");
// 判断是否存在
System.out.println("d:\\aaa\\bbb.java 是否存在:"+f.exists());
System.out.println("d:\\aaa 是否存在:"+f2.exists());
// 判断是⽂件还是⽬录
System.out.println("d:\\aaa ⽂件?:"+f2.isFile());
System.out.println("d:\\aaa ⽬录?:"+f2.isDirectory());
}
}
/* 输出结果: d:\aaa\bbb.java 是否存在:true d:\aaa 是否存在:true d:\aaa ⽂件?:false d:\aaa ⽬录?:true */
创建删除功能的⽅法
public boolean createNewFile() :当且仅当具有该名称的⽂件尚不存在时,创建⼀个新的空⽂件。public boolean delete() :删除由此File表示的⽂件或⽬录。public boolean mkdir() :创建由此File表示的⽬录。public boolean mkdirs() :创建由此File表示的⽬录,包括任何必需但不存在的⽗⽬录。
⽅法演示,代码如下:
public class FileCreateDelete {
public static void main(String[] args) throws IOException {
// ⽂件的创建
File f = new File("aaa.txt");API中说明:delete⽅法,如果此File表示⽬录,则⽬录必须为空才能删除。
1.4 ⽬录的遍历
public String[] list() :返回⼀个String数组,表示该File⽬录中的所有⼦⽂件或⽬录。
public File[] listFiles() :返回⼀个File数组,表示该File⽬录中的所有的⼦⽂件或⽬录。
System.out.println("是否存在:"+f.exists()); // false
System.out.println("是否创建:"+f.createNewFile()); // true
System.out.println("是否存在:"+f.exists()); // true
// ⽬录的创建
File f2= new File("newDir");
System.out.println("是否存在:"+f2.exists());// false
System.out.println("是否创建:"+f2.mkdir()); // true
System.out.println("是否存在:"+f2.exists());// true
// 创建多级⽬录
File f3= new File("newDira\\newDirb");
System.out.println(f3.mkdir());// false
File f4= new File("newDira\\newDirb");
System.out.println(f4.mkdirs());// true
// ⽂件的删除
System.out.println(f.delete());// true
// ⽬录的删除
System.out.println(f2.delete());// true
System.out.println(f4.delete());// false
}
}
public class FileFor {
public static void main(String[] args) {
File dir = new File("d:\\java_code");
//获取当前⽬录下的⽂件以及⽂件夹的名称。
String[] names = dir.list();
for(String name : names){
System.out.println(name);
}
//获取当前⽬录下的⽂件以及⽂件夹对象,只要拿到了⽂件对象,那么就可以获取更多信息
File[] files = dir.listFiles();
for (File file : files) {
System.out.println(file);
}
}
}
- ⼩贴⼠:
调⽤listFiles⽅法的File对象,表示的必须是实际存在的⽬录,否则返回null,⽆法进⾏遍历。
2 ⽂件过滤器优化
java.io.FileFilter 是⼀个接⼝,是File的过滤器。 该接⼝的对象可以传递给File类的listFiles(FileFilter) 作为参数, 接⼝中只有⼀个⽅法。boolean accept(File pathname) :测试pathname是否应该包含在当前File⽬录中,符合则返回true。
分析:
- 接⼝作为参数,需要传递⼦类对象,重写其中⽅法。我们选择匿名内部类⽅式,⽐较简单。
accept⽅法,参数为File,表示当前File下所有的⼦⽂件和⼦⽬录。保留住则返回true,过滤掉则返回false。
保留规则:- 要么是.java⽂件。
- 要么是⽬录,⽤于继续遍历。
- 通过过滤器的作⽤, listFiles(FileFilter) 返回的数组元素中,⼦⽂件对象都是符合条件的,可以直接
打印。
代码实现:
public class DiGuiDemo4 {
public static void main(String[] args) {
File dir = new File("D:\\aaa");
printDir2(dir);
}
public static void printDir2(File dir) {
// 匿名内部类⽅式,创建过滤器⼦类对象
File[] files = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".java")||pathname.isDirectory();
}
});
// 循环打印
for (File file : files) {
if (file.isFile()) {
System.out.println("⽂件名:" + file.getAbsolutePath());
} else {
printDir2(file);
}
}
}
}
边栏推荐
猜你喜欢
![[TypeScript Notes] 03 - TS Type Declaration File](/img/8d/bf4a1763e25c4bc73f5f2138a9147e.png)
[TypeScript Notes] 03 - TS Type Declaration File

线性代数学习笔记4-6:矩阵的零空间、列空间、行空间、左零空间、初等行变换、测验题

共享设备租赁小程序开发制作功能介绍

【TypeScript笔记】03 - TS类型声明文件

2022 Niu Ke Duo School Six B-Eezie and Pie (dfs)

量化风控的规则开发,如何更好做策略定规则,抓坏人

Product system module of advertising e-commerce system development function

Seq2Seq 粗浅理解

自动化运维工具——ansible概述和部署

Problems encountered with Flutter environment configuration
随机推荐
不是吧,10:00面试,10:08就出来了 ,问的实在是太...
Redis关闭持久化
MySQL---单表和多表查询练习
洛谷P1218 特殊的质数肋骨 Superprime Rib
Golang Break, Continue out of multi-layer cycle
【着色器实现Distortion整体扭曲效果_Shader效果第十七篇】
Product system module of advertising e-commerce system development function
【TypeScript笔记】02 - TS高级类型
2022 Niu Ke Duo School Six M-Z-Game on grid (dynamic programming)
正则工具类
Implementing a simple address book in C language
Small P weekly, Vol. 14
线性代数学习笔记5-2:(正交的)投影、投影矩阵、A^T A、最小二乘法LS
Regular tool class
happens-before规则与线程单例安全习题
navicat linked server mysql
用C语言实现简单得通讯录
从简历被拒到收割8个大厂offer,我用了3个月成功破茧成蝶
Pytorch中计算自己模型的FLOPs | thop.profile() 方法
洛谷P1201 贪婪的送礼者Greedy Gift Givers