一、简单介绍
- 程序经常需要访问文件和目录,读取文件信息或写入信息到文件,在 Java 语言中对文件的读写是通过 I/O 流技术实现的。
- Java 语言使用 File 类对文件和目录进行操作,查找文件时需要实现 FilenameFilter 或FileFilter 接口。另外,读写文件内容可以通过 FileInputStream、FileOutputStream、FileReader和 FileWriter 类实现,它们属于 I/O 流。这些类和接口全部来源于 java.io 包。
- File 类表示一个与平台无关的文件或目录。File 类名很有欺骗性,初学者会误认为是File 对象只是一个文件,但它也可能是一个目录。
二、File常用方法
1. 构造方法
- File(String path):如果 path 是实际存在的路径,则该 File 对象表示的是目录;如 果 path 是文件名,则该File 对象表示的是文件。
- File(String path, String name):path 是路径名,name 是文件名。
- File(File dir, String name):dir 是路径对象,name 是文件名。
2、获得文件名
- String getName( ):获得文件的名称,不包括路径。
- String getPath( ):获得文件的路径。
- String getAbsolutePath( ):获得文件的绝对路径。
- String getParent( ):获得文件的上一级目录名。
3、文件属性测试 - boolean exists( ):测试当前 File 对象所表示的文件是否存在。
- boolean canWrite( ):测试当前文件是否可写。
- boolean canRead( ):测试当前文件是否可读。
- boolean isFile( ):测试当前文件是否是文件。
- boolean isDirectory( ):测试当前文件是否是目录。
4、文件操作 - long lastModified( ):获得文件最近一次修改的时间。
- long length( ):获得文件的长度,以字节为单位。
- boolean delete( ):删除当前文件。成功返回 true,否则返回 false。
- boolean renameTo(File dest):将重新命名当前 File 对象所表示的文件。成功返回true,否则返回
false。
5、目录操作 - boolean mkdir( ):创建当前 File 对象指定的目录。
- String[] list():返回当前目录下的文件和目录,返回值是字符串数组。
- String[] list(FilenameFilter filter):返回当前目录下满足指定过滤器的文件和目录,参数是实现 FilenameFilter 接口对象,返回值是字符串数组。
- File[] listFiles():返回当前目录下的文件和目录,返回值是 File 数组。
- File[] listFiles(FilenameFilter filter):返回当前目录下满足指定过滤器的文件和目录,参数是实现 FilenameFilter 接口对象,返回值是 File 数组。
- File[] listFiles(FileFilter filter):返回当前目录下满足指定过滤器的文件和目录,参数是实现 FileFilter 接口对象,返回值是 File 数组。
6、过滤器接口
对目录操作有两个过滤器接口:FilenameFilter 和 FileFilter。它们都只有一个抽象方法accept,
FilenameFilter 接口中的 accept 方法如下:
- boolean accept(File dir, String name):测试指定 dir 目录中是否包含文件名为 name 的文件。
FileFilter 接口中的 accept 方法如下:
- boolean accept(File pathname):测试指定路径名是否应该包含在某个路径名列表中。
7、实例代码:
从指定的目录中F:\PDF电子书籍\列出文件信息
import java.io.File;
import java.io.FilenameFilter;
public class FileOperator {
public static void main(String[] args) {
// 用File对象表示一个目录
File dir=new File("F:\\PDF电子书籍\\");
Filter filter=new Filter("pdf");
System.out.println("PDF文件目录:" + dir);
// 列出目录F:\PDF电子书籍\下,文件后缀名为PDF的所有文件
String files[] = dir.list(filter);
// 遍历文件列表
for (String fileName : files) {
// 为目录F:\PDF电子书籍\下的文件或目录创建File对象
File f = new File(dir, fileName);
// 如果该f对象是文件,则打印文件名
if (f.isFile()) {
System.out.println("文件名:" + f.getName());
System.out.println("文件绝对路径:" + f.getAbsolutePath());
System.out.println("文件路径:" + f.getPath());
} else {
System.out.println("子目录:" + f);
}
}
}
}
// 自定义基于文件扩展名的文件过滤器
class Filter implements FilenameFilter {
// 文件扩展名
String extent;
// 构造方法
Filter(String extent) {
this.extent = extent;
}
// @Override
public boolean accept(File dir, String name) {
// 测试文件扩展名是否为extent所指定的
return name.endsWith("." + extent);
}
}
PDF文件目录:F:\PDF电子书籍
文件名:628498 Spark大数据分析核心概念技术及实践OCR.pdf
文件绝对路径:F:\PDF电子书籍\628498 Spark大数据分析核心概念技术及实践OCR.pdf
文件路径:F:\PDF电子书籍\628498 Spark大数据分析核心概念技术及实践OCR.pdf
文件名:630445 R语言数据挖掘方法及应用(薛薇2016) - 完整版.pdf
文件绝对路径:F:\PDF电子书籍\630445 R语言数据挖掘方法及应用(薛薇2016) - 完整版.pdf
文件路径:F:\PDF电子书籍\630445 R语言数据挖掘方法及应用(薛薇2016) - 完整版.pdf
文件名:631359+Python数据分析基础.pdf
文件绝对路径:F:\PDF电子书籍\631359+Python数据分析基础.pdf
文件路径:F:\PDF电子书籍\631359+Python数据分析基础.pdf
文件名:631360 Python数据抓取技术与实战_14097412.pdf
文件绝对路径:F:\PDF电子书籍\631360 Python数据抓取技术与实战_14097412.pdf
文件路径:F:\PDF电子书籍\631360 Python数据抓取技术与实战_14097412.pdf
文件名:631362+机器学习实践应用+带书签目录+高清完整版.pdf
文件绝对路径:F:\PDF电子书籍\631362+机器学习实践应用+带书签目录+高清完整版.pdf
文件路径:F:\PDF电子书籍\631362+机器学习实践应用+带书签目录+高清完整版.pdf
文件名:632992+白话深度学习与TensorFlow.pdf
文件绝对路径:F:\PDF电子书籍\632992+白话深度学习与TensorFlow.pdf
文件路径:F:\PDF电子书籍\632992+白话深度学习与TensorFlow.pdf
文件名:632997 LINUX企业应用案例精解 第2版 李晨光.pdf
文件绝对路径:F:\PDF电子书籍\632997 LINUX企业应用案例精解 第2版 李晨光.pdf
文件路径:F:\PDF电子书籍\632997 LINUX企业应用案例精解 第2版 李晨光.pdf
文件名:Java从小白到大牛精简版.pdf
文件绝对路径:F:\PDF电子书籍\Java从小白到大牛精简版.pdf
文件路径:F:\PDF电子书籍\Java从小白到大牛精简版.pdf
文件名:深度学习.pdf
文件绝对路径:F:\PDF电子书籍\深度学习.pdf
文件路径:F:\PDF电子书籍\深度学习.pdf
Process finished with exit code 0