博客主页: 小扳_-CSDN博客
❤感谢大家点赞收藏⭐评论✍
目录
1.0 File 文件的说明
2.0 如何创建 File 类的对象
2.1 需要注意的事项
3.0 File 类的常用 API
3.1 如何创建文件或文件夹
3.2 如何查询文件和文件夹的信息
3.3 如何删除文件和文件夹
3.4 如何重命名文件和文件夹
3.5 如何遍历文件和文件夹名称
3.6 如何遍历文件和文件夹对象
4.0 File 文件搜索
在 Java 中,File 类是用于操作文件和文件夹的类。它提供了一系列的方法,可以用于创建、删除、重命名、查询文件和目录的信息等操作。
一般都是通过文件路径创建 File 对象,注意的是该对象即可以是文件也可以是文件夹。
常用的三种方式:(1)使用文件路径创建 File 对象、(2)使用目录路径和文件名创建 File 对象、(3)使用父目录的 File 对象和文件名创建 File 对象
代码如下:
public class NewFile { public static void main(String[] args) { //1. 创建文件对象 File f1 = new File("D:\\software\\aaa\\bbb.txt"); //这样就可以得到了该路径的文件对象了。 //2. 创建文件夹对象 File f2 = new File("D:\\software\\aaa"); //像这样就可以得到了该路径的文件夹对象了。 //3. 第二种创建文件对象的方式 // 使用父目录的 File 对象和文件名创建 File 对象 File f3 = new File(f2,"bbb.txt"); //4. 第四种创建文件对象的方式 // 使用目录路径和文件名创建 File 对象 File f4 = new File("D:\\software\\aaa","bbb.txt"); } }
这些方式都是大致是相同的,表达都是同一个意思。
第一个点:File 类对象既可以是文件也可以是文件夹。
第二个点:无论该路径上的文件或者文件夹是否存在,都不会报错,文件或者文件夹存不存在都是可以的创建 File 类对象的。
第三个点:编写路径的时候,需要注意的是如果用到了反斜杠,为了防止字符转义,所以需要再加多一条反斜杠进行转义为单个反斜杠。如果用到了正斜杆,就可以单写一条就够了。还可以用 File 类中的方法来进行编写路径。
代码如下:
import java.io.File; public class NewFile { public static void main(String[] args) { File f1 = new File("D:\\software\\aaa\\bbb.txt"); File f2 = new File("D:/software/aaa/bbb.txt"); File f3 = new File("D:"+File.separator+"software"+File.separator+"aaa"+File.separator+"bbb.txt"); System.out.println(f3.getAbsoluteFile()); } }
运行结果如下:
这三种效果都是相同的,都可以得到该类的对象。
先来介绍创建、删除、重命名、查询文件和目录的信息的相关 API。
createNewFile():创建一个新的空文件。
代码如下:
import java.io.IOException; public class NewFile { public static void main(String[] args) throws IOException { //先要定义 File 类对象 File f1 = new File("D:\\software\\aaa\\ccc.txt"); //创建文件 f1.createNewFile(); } }
如果文件不存在的话,就会创建一个空文件。需要注意的是,这里会有编译异常,需要抛异常或者捕获异常。
mkdir():创建一个新的目录。
代码如下:
import java.io.File; public class NewFile { public static void main(String[] args) { File f1 = new File("D:\\software\\aaa\\ddd"); f1.mkdir(); } }
如果文件不存在的话,就会创建一个空文件。需要注意的是,只能创建一级文件夹。
mkdirs():创建一个多级目录。
代码如下:
import java.io.File; public class NewFile { public static void main(String[] args) { File f1 = new File("D:\\software\\aaa\\ddd\\fff\\ggg\\hhh"); f1.mkdir(); } }
这些方法若创建成功都会返回 boolean 类型。
这些查询信息的 API 会比较多,但是很容易上手,直接代码演示了。
代码如下:
import java.text.SimpleDateFormat; import java.io.File; public class NewFile { public static void main(String[] args) { File f1 = new File("D:\\software\\aaa\\bbb.txt"); //1.0 判断当前文件对象,对应的文件路径是否存在,存在返回true,反之。 System.out.println(f1.exists()); //输出结果为:true //2.0 判断当前文件对象指代的是否是文件,是文件返回true,反之。 System.out.println(f1.isFile()); //输出结果为:true //3.0 判断当前文件对象指代的是否是文件夹,是文件返回true,反之。 System.out.println(f1.isDirectory()); //输出结果为:false //4.0 获取文件的名称(包含后缀) String name = f1.getName(); System.out.println(name); //输出结果为:bbb.txt //5.0 获取文件的大小,返回字节个数,返回类型为 long 类型。 long len = f1.length(); System.out.println(len); //输出结果为:0 //6.0 获取文件的最后修改的时间,返回类型为 long 类型。 long lastTime = f1.lastModified(); System.out.println(lastTime); //输出结果为:1698570082109 //这里可以格式化 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time = simpleDateFormat.format(lastTime); System.out.println(time); //输出结果为:2023-10-29 17:01:22 //7.0 获取创建文件对象时,使用的路径。 String path = f1.getPath(); System.out.println(path); //输出结果为:D:\software\aaa\bbb.txt //8.0 获取创建文件对象时,使用的绝对路径。 String absolutePath = f1.getAbsolutePath(); System.out.println(absolutePath); //输出结果为:D:\software\aaa\bbb.txt } }
运行结果如下:
delete():删除文件或文件夹。
代码如下:
import java.io.File; public class NewFile { public static void main(String[] args) { File f1 = new File("D:\\software\\aaa\\bbb.txt"); System.out.println(f1.delete()); } }
删除成功会返回ture,反之。需要注意的是,只能删除空文件或者文件夹。
renameTo(File dest):重命名文件或文件夹。
代码如下:
import java.io.File; public class NewFile { public static void main(String[] args) { File f1 = new File("D:\\software\\aaa\\ccc.txt"); File f2 = new File("D:\\software\\aaa\\sss.txt"); System.out.println(f1.renameTo(f2)); } }
如果可以改名成功,会返回true,反之。
list():返回目录下的所有文件和目录的名称数组。
代码如下:
import java.io.File; import java.util.Arrays; public class NewFile { public static void main(String[] args) { File f = new File("D:\\software\\code\\2023_java\\2023_java_code"); String[] strings = f.list(); System.out.println(Arrays.toString(strings)); } }
返回的是字符串类型的文件名,而不是文件或者文件夹对象。
listFiles():返回目录下的所有文件和目录的File对象数组。
代码如下:
import java.io.File; import java.util.Arrays; public class NewFile { public static void main(String[] args) { File file = new File("D:\\software\\code\\2023_java\\2023_java_code"); File[] files = file.listFiles(); System.out.println(Arrays.toString(files)); } }
运行结果如下:
得到的是文件或者是文件夹的对象。
接下来做个小项目,File 文件搜索,给出盘符还有目标文件,来通过遍历来找到该目标文件的路径,并且启动起来。
代码如下:
import java.io.File; public class NewFile { public static void main(String[] args) throws Exception { fileSearch(new File("D:\\"),"WeChat.exe"); } public static void fileSearch(File file,String name) throws Exception { if (file == null || !file.exists() || file.isFile()){ return; } File[] files = file.listFiles(); if (files != null) { for (File f : files) { if (f.isFile()) { if (f.getName().contains(name)) { System.out.println("找到了:" + f.getAbsoluteFile()); Runtime runtime = Runtime.getRuntime(); runtime.exec(f.getAbsolutePath()); } } else { fileSearch(f, name); } } } } }