基本概念:
File 类是 java.io 包的一部分,用于表示文件和目录路径名的抽象表示形式。这个类可以用来创建、查找、管理文件系统中的文件和目录。尽管 File 对象可以表示文件或目录,但它并不表示文件内容本身或文件系统中实际存在的文件或目录。
以下是一些常用的 File 类方法和功能:
- 构造函数:
-
- File(String pathname) : 通过将给定的路径创建一个新的 File 对象,用来指代某个文件。
- File(String parent, String child): 根据父路径名字符串和子路径名字符串创建一个新的 File 实例。
- File(File parent, String child): 根据父抽象路径名和子路径名字符串创建一个新的 File 实例。
- 获取文件信息:
-
- String getName(): 返回由File对象指代的文件或目录的名称。
- String getPath(): 返回由File对象创建时指定的路径。
- long length(): 返回由此文件的长度,以字节为单位。
- boolean isFile(): 判断文件是否存在,如果是目录则返回false。
- boolean isDirectory(): 判断文件是否是目录。
- boolean exists(): 判断文件的路径是否存在。
- 文件操作:
-
- boolean createNewFile(): 当且仅当不存在具有此抽象路径名指定名称的文件时,创建一个新的空文件。
- boolean mkdir(): 创建由此路径名命名的目录。
- boolean mkdirs(): 创建由此路径名指定的多级目录。
- boolean delete(): 删除由此路径名表示的文件或目录。
- boolean renameTo(File dest): 重命名此路径名表示的文件。
- 列表文件和目录:
-
- String[] list(): 返回一个字符串数组,这些字符串指定此路径名表示的目录中的文件和目录。
- File[] listFiles(): 返回一个抽象路径名数组,这些路径名表示此路径名表示的目录中的文件。
实例一
将下面的文件依次修改为21.txt,22.txt,23.txt,24.txt,25.txt
关键代码:
import java.io.File;
public class FileLearn {
public static void main(String[] args) {
//创建文件指代对象
File file=new File("C:\\Users\\bumiexiguang\\OneDrive\\桌面\\毕业设计\\fileTest");
//遍历一级文件
//遍历一级文件名
String[] list = file.list();
for (String item:list){
System.out.println(item);
}
//遍历一级文件,并修改文件名
File[] files = file.listFiles();
for (File item : files) {
String name = item.getName();
String pre = name.substring(0, name.indexOf("."));
String rear = name.substring(name.indexOf("."));
String newPre=String.valueOf(Integer.valueOf(pre)+20);
//拼接文件名
String newName=newPre+rear;
//重命名,item.getParent()获取指代文件的父目录
item.renameTo(new File(item.getParent(),newName));
}
}
}
实现结果:
实例二
使用相对路径创建文件
public class FileLearn2 {
public static void main(String[] args) {
/**
* 指代模块中的文件,相对路径写法
*/
File file=new File("a.txt");
//当文件不存在则创建文件
if (!file.exists()){
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
相对路径是对应蓝色位置,就是相对于lambada模块路径的位置。
实例三
搜索文件,采用递归查找fileTest中的22.txt并返回此文件的位置
import java.io.File;
public class FileLearn3 {
public static void main(String[] args) {
System.out.println("开始查找");
search(new File("C:\\Users\\bumiexiguang\\OneDrive\\桌面\\毕业设计"), "22.txt");
}
public static void search(File dir, String fileName){
//当文件不存在或者为null
if(!dir.exists()||dir==null){
return ;
}
//如果是目录则遍历当前文件夹,如果是文本则判断是否是查找的文件
if(dir.isDirectory()){
File[] files = dir.listFiles();
for (File file : files) {
//如果是目录则递归
if(file.isDirectory()){
search(file, fileName);
}else {
if(file.getName().contains(fileName)){
System.out.println("找到指定文件位置:"+file.getAbsolutePath());
}
}
}
}else {
if (dir.getName().contains(fileName)) {
System.out.println("找到指定文件位置:" + dir.getAbsolutePath());
}
}
}
}
执行结果