File类

File 类是 java.io 包中唯一代表磁盘文件本身的类。File 类定义了一些与平台无关的方法来操作文件,这意味着,程序开发人员可以通过调用 File 类中的方法,实现创建、删除、重命名文件等操作。File 类的对象主要用来获取文件本身的一些信息,如文件所在的目录、文件的长度、文件读写权限等。数据流可以将数据写入文件中,文件也是数据流最常用的数据媒体。

文件的创建与删除

可以使用 File 类创建一个文件对象。通常使用以下 3 种构造方法来创建文件对象。

File(String pathname)

该构造方法通过将给定的路径名字符串转换为抽象路径名来创建一个新 File 实例。语法如下:

new File(String pathname)

其中,pathname 代表路径名称(包含文件名)。例如:

File file = new File("d:/1.txt");

File(String parent,String child)

该构造方法根据定义的父路径和子路径字符串(包含文件名)创建一个新的 File 对象。语法如下:

new File(String parent, String child)
  • parent:父路径字符串,如 D:/ 或 D:/doc。

  • child:子路径字符串,如 letter.txt。

File(File f, String child)

该构造方法根据 f 抽象路径名和 child 路径名字符串创建一个新 File 实例。语法如下:

new File(File f, String child)
  • f:父路径对象,如 D:/doc/。

  • child:子路径字符串,如 letter.txt。

对于 Microsoft Windows 平台,包含盘符的路径名前缀由驱动器号和一个 “:” 组成。如果路径名是绝对路径名,还可能后跟 “\\”。

当使用 File 类创建一个文件对象后,例如:

File file = new File("word.txt");

如果当前目录中不存在名称为 word 的文件,那么 File 类对象可通过调用 createNewFile() 方法创建一个名称为 word.txt 的文件;如果存在 word.txt 文件,则可以通过文件对象的 delete() 方法删除该文件,如例15.1所示。

【例15.1】在D盘中创建文本文件(实例位置:资源包\TM\sl\15\1)

在项目中创建 FileTest 类,在主方法中判断D盘的根目录中是否存在 word.txt 文件:如果该文件存在,则删除它;如果该文件不存在,则创建它。

import java.io.File;

public class FileTest { // 创建类FileTest
	public static void main(String[] args) { // 主方法
		File file = new File("D:\\word.txt"); // 创建文件对象
		if (file.exists()) { // 如果该文件存在
			file.delete(); // 将文件删除
			System.out.println("文件已删除"); // 输出的提示信息
		} else { // 如果文件不存在
			try { // try语句块捕捉可能出现的异常
				file.createNewFile(); // 创建该文件
				System.out.println("文件已创建"); // 输出的提示信息
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}

如果 D 盘下没有 word.txt 文件,则会创建该文件并输出如下内容:

     文件已创建

如果 D 盘下有 word.txt 文件,则会删除该文件并输出如下内容:

     文件已删除

获取文件信息

File 类提供了很多方法以获取文件本身的信息,其中常用的方法如表15.1所示。

image 2024 03 05 17 16 30 579
Figure 1. 表15.1 File类的常用方法

下面通过实例介绍如何使用上述的某些方法来获取文件信息。

【例15.2】读取文本文件的名称、长度和隐藏属性(实例位置:资源包\TM\sl\15\2)

获取 D 盘根目录下 word.txt 文件的文件名、文件长度,并判断该文件是否为隐藏文件。

import java.io.File;

public class FileTest2 {
	public static void main(String[] args) {
		File file = new File("D:\\word.txt"); // 创建文件对象
		if (file.exists()) { // 如果文件存在
			String name = file.getName(); // 获取文件名称
			long length = file.length(); // 获取文件长度
			boolean hidden = file.isHidden(); // 判断文件是否为隐藏文件
			System.out.println("文件名称:" + name); // 输出信息
			System.out.println("文件长度是:" + length);
			System.out.println("该文件是隐藏文件吗?" + hidden);
		} else { // 如果文件不存在
			System.out.println("该文件不存在"); // 输出信息
		}
	}
}

当 D 盘根目录下有一个非隐藏的 word.txt 文件时,运行结果如下:

     文件名称:word.txt
     文件长度是:0
     该文件是隐藏文件吗?false

编程训练(答案位置:资源包\TM\sl\15\编程训练)

【训练1】批量创建文件夹 在D盘的test目录下创建20个文件夹,分别用数字1~20命名。

【训练2】列出所有文件/文件夹名 列出C盘目录下的Windows文件夹中的所有文件/文件夹名。