Java 中的 `File` 类是 java.io 包的一部分,它提供了丰富的文件操作方法。`File` 类可以用来表示文件和目录路径名的抽象表示形式,即它可以用来获取文件或目录的属性,也可以用来创建、删除、重命名文件和目录。下面是一些常用的 `File` 类方法,以及它们的简单示例。
创建文件对象
在执行任何文件操作之前,需要创建一个 `File` 对象。
import java.io.File;
public class FileExample {
public static void main(String[] args) {
File file = new File("example.txt");
}
}
文件和目录的基本操作
判断文件或目录是否存在
import java.io.File;
public class FileExample {
public static void main(String[] args) {
File file = new File("example.txt");
if (file.exists()) {
System.out.println("文件存在");
} else {
System.out.println("文件不存在");
}
}
}
创建新文件
import java.io.File;
import java.io.IOException;
public class FileExample {
public static void main(String[] args) {
File file = new File("example.txt");
try {
if (file.createNewFile()) {
System.out.println("文件创建成功");
} else {
System.out.println("文件已存在");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
删除文件
import java.io.File;
public class FileExample {
public static void main(String[] args) {
File file = new File("example.txt");
if (file.delete()) {
System.out.println("文件删除成功");
} else {
System.out.println("文件删除失败");
}
}
}
创建目录
import java.io.File;
public class FileExample {
public static void main(String[] args) {
File directory = new File("exampleDir");
if (directory.mkdir()) {
System.out.println("目录创建成功");
} else {
System.out.println("目录创建失败");
}
}
}
列出目录内容
import java.io.File;
public class FileExample {
public static void main(String[] args) {
File directory = new File(".");
String[] files = directory.list();
for (String file : files) {
System.out.println(file);
}
}
}
重命名文件或目录
import java.io.File;
public class FileExample {
public static void main(String[] args) {
File oldFile = new File("example.txt");
File newFile = new File("newExample.txt");
if (oldFile.renameTo(newFile)) {
System.out.println("文件重命名成功");
} else {
System.out.println("文件重命名失败");
}
}
}
获取文件属性
获取文件大小
import java.io.File;
public class FileExample {
public static void main(String[] args) {
File file = new File("example.txt");
if (file.exists() && file.isFile()) {
System.out.println("文件大小: " + file.length() + " 字节");
}
}
}
判断是文件还是目录
import java.io.File;
public class FileExample {
public static void main(String[] args) {
File file = new File("example.txt");
if (file.isDirectory()) {
System.out.println("这是一个目录");
} else if (file.isFile()) {
System.out.println("这是一个文件");
}
}
}
获取最后修改时间
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
public class FileExample {
public static void main(String[] args) {
File file = new File("example.txt");
long lastModified = file.lastModified();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = sdf.format(new Date(lastModified));
System.out.println("最后修改时间: " + date);
}
}
文件和目录的遍历
遍历目录及其子目录
import java.io.File;
public class FileExample {
public static void main(String[] args) {
File directory = new File(".");
listFiles(directory, 0);
}
public static void listFiles(File dir, int indent) {
if (dir.isDirectory()) {
File[] files = dir.listFiles();
if (files != null) {
for (File file : files) {
for (int i = 0; i < indent; i++) {
System.out.print(" ");
}
System.out.println(file.getName());
if (file.isDirectory()) {
listFiles(file, indent + 1);
}
}
}
}
}
}
这个递归方法会打印出目录及其所有子目录中的文件和目录名,使用缩进来表示目录的层次结构。
文件读写操作
`File` 类本身不提供文件内容的读写操作,但它是 `InputStream` 和 `OutputStream` 的基础,这些流类提供了读写文件内容的功能。下面是一些简单的读写文件的例子。
写入文件
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class FileWriteExample {
public static void main(String[] args) {
try {
BufferedWriter writer = new BufferedWriter(new FileWriter("example.txt"));
writer.write("Hello, World!");
writer.newLine();
writer.write("This is a simple text file example.");
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
读取文件
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class FileReadExample {
public static void main(String[] args) {
try {
BufferedReader reader = new BufferedReader(new FileReader("example.txt"));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
这些例子展示了如何使用 `BufferedWriter` 和 `BufferedReader` 以及它们的包装器 `FileWriter` 和 `FileReader` 来写入和读取文本文件。
总结
Java 的 `File` 类为文件和目录操作提供了丰富的API。通过这些API,开发者可以轻松地创建、删除、重命名文件和目录,获取文件属性,遍历文件系统,以及读写文件内容。这些功能是任何需要文件操作的Java应用程序的基础。虽然现代Java开发中可能会使用更高级的API,如NIO.2(Java New I/O)中的 `Path` 和 `Files` 类,但 `File` 类仍然是一个重要和有用的工具。