Java中 File类(文件、目录和文件过滤器)
发布日期:2021-05-26 05:09:51 浏览次数:25 分类:精选文章

本文共 3366 字,大约阅读时间需要 11 分钟。

Java File 类简明指南

File 类概述

File 类位于 java.io 包中,实现了 Serializable 和 Comparable 接口。它用于表示文件和目录的路径信息,提供与文件和目录操作相关的基本功能,例如创建、删除、查询文件和目录,并支持序列化和比较操作。此外,File 类允许你离开操作系统依赖的环境,能够在任何操作系统上使用。


File 类的核心特性

File 对象可以表示文件或目录,但仅表示路径信息,不能直接操作文件内容。其主要功能包括:

  • 获取文件和目录的基本信息。
  • 创建和删除文件或目录。
  • 判断文件或目录是否存在。
  • 列出目录中的文件和子目录。
  • 替换文件或目录的路径。
  • 获取文件的属性,如是否可执行、是否可读、是否可写等。

File 类常用方法

1. 路径和名称的操作

  • getAbsolutePath():返回此 File 对象表示的路径的绝对形式。
  • getPath():返回此 File 对象表示的路径的路径名。
  • getName():返回此 File 对象所表示文件或目录的名称。
  • getParentFile():返回此 File 对象的上一个目录。
  • getParent():返回此 File 对象所在文件或目录的上一个目录的路径名。

2. 文件状态检测

  • canExecute():判断此 File 对应的文件是否可执行。
  • canRead():判断此 File 对应的文件是否可读。
  • canWrite():判断此 File 对应的文件是否可写。
  • isHidden():判断此 File 对应的文件是否为隐藏文件。
  • lastModified():返回此 File 对应的文件的最后修改时间。
  • length():返回此 File 对应的文件的大小(单位为字节)。

3. 文件操作

  • createNewFile():创建一个新的空文件。
  • delete():删除文件或目录,注意:直接删除,不走回收站。
  • renameTo(File dest):重命名此 File 对应的文件或目录。
  • exists():判断此 File 对应的文件或目录是否存在。

4. 目录操作

  • isDirectory():判断此 File 对应的对象是否为目录。
  • mkdir():创建当前目录。
  • mkdirs():创建当前目录及其上级目录(如果不存在)。
  • list():列出此 File 对应目录中的所有文件名。
  • listFiles():列出此 File 对应目录中的所有文件(返回 File 对象)。

5. 剩余方法

  • lastModified():返回文件的最后修改时间。
  • getFreeSpace():返回此 File 对应路径的分区未分配的空间大小。
  • isFile():判断此 File 对应的对象是否为文件。
  • deleteOnExit():在 JVM 停止时删除此 File 对应的文件或目录。

File 类常见用法示例

示例 1:文件路径的处理

File filePath = new File("E:/JavaSE/file01/text.txt");
System.out.println("文件路径:" + file);// E:\JavaSE\file01\text.txt
boolean isFile = file.isFile();
System.out.println("是否为文件:" + isFile); // false
// 创建新文件
if (!file.exists()) {
file.createNewFile();
System.out.println("新文件已创建,路径:" + file);
System.out.println("是否为文件:" + file.isFile()); // true
}
// 获取文件长度
System.out.println("文件长度:" + file.length()); // 0
// 获取文件路径名
System.out.println("文件路径名:" + file.getPath()); // src\com\JavaSE\file01\text.txt
// 获取文件名
System.out.println("文件名:" + file.getName()); // text.txt

示例 2:目录遍历

File dir = new File("E:/JavaSE/file01");
System.out.println(dir.isDirectory()); // true
// 列出目录中的所有文件
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
System.out.println("Directory: " + file);
showDir(file);
} else {
System.out.println("File: " + file);
}
}
// 列出目录中的所有文件名
String[] strs = dir.list();
System.out.println(Arrays.toString(strs)); // [., file01, ..]

示例 3:使用 FilenameFilter 过滤文件

File dir = new File("E:/JavaSE/file01");
File[] filteredFiles = dir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return new File(dir, name).isFile() && name.endsWith(".txt") || name.endsWith(".ppt");
}
});
System.out.println("符合条件的文件数量:" + filteredFiles.length);
for (File file : filteredFiles) {
System.out.println("File: " + file.getName());
}

示例 4:创建临时文件

// 创建临时文件目录
File tempDir = new File("temp");
if (!tempDir.exists()) {
tempDir.mkdirs();
}
// 创建临时文件
File tempFile = File.createTempFile(tempDir, "test-", ".txt");
System.out.println("临时文件路径: " + tempFile.getPath()); // temp\test-XXXXXX.txt
tempFile.delete(); // 删除临时文件

注意事项

  • File 对象本身并不表示文件的实际内容。只有当 File 对象表示的路径存在对应的文件或目录时,才能通过其他方法(如 InputStream 流或 FileReader 读取器)来访问文件内容。
  • 在开发过程中,避免直接使用 File.delete(),因为这会直接从文件系统中删除文件或目录,容易导致数据丢失。
  • 使用 File 类中的方法时,认真检查参数是否有效,避免 runtime exception。

  • 总结

    File 类是 Java I/O 操作的基础,广泛应用于文件和目录的管理。掌握 File 类的方法,可以方便地操作文件和目录的路径信息,简化文件操作逻辑。如果需要更高级别的文件管理功能,可以参考 Java 领域的其他类和接口,如 FileSystem 或 Path 类。随着对 File 类的深入学习,你会发现它在 Java IO 操作中起到的重要作用。

    上一篇:java个性化穿搭推荐系统(源码+开题报告)
    下一篇:Django:POST方式传参

    发表评论

    最新留言

    留言是一种美德,欢迎回访!
    [***.207.175.100]2025年04月17日 20时43分13秒