java 如何判断文件是否存在
使用 java.io.File 类
File 类的 exists() 方法可以检查文件是否存在。该方法返回一个布尔值,存在则返回 true,否则返回 false。
import java.io.File;
public class FileExistsExample {
public static void main(String[] args) {
File file = new File("path/to/your/file.txt");
if (file.exists()) {
System.out.println("文件存在");
} else {
System.out.println("文件不存在");
}
}
}
使用 java.nio.file.Files 类(Java 7+)
Files 类提供了更现代的 API,exists() 方法结合 Paths.get() 可以检查文件是否存在。
import java.nio.file.Files;
import java.nio.file.Paths;
public class FilesExistsExample {
public static void main(String[] args) {
boolean exists = Files.exists(Paths.get("path/to/your/file.txt"));
if (exists) {
System.out.println("文件存在");
} else {
System.out.println("文件不存在");
}
}
}
检查文件是否为普通文件
如果需要确认路径指向的是文件而非目录,可以结合 isRegularFile() 方法。
import java.nio.file.Files;
import java.nio.file.Paths;
public class IsRegularFileExample {
public static void main(String[] args) {
boolean isFile = Files.isRegularFile(Paths.get("path/to/your/file.txt"));
if (isFile) {
System.out.println("路径指向普通文件");
} else {
System.out.println("路径可能指向目录或其他类型");
}
}
}
处理符号链接
Files.exists() 默认不追踪符号链接。如需检查符号链接指向的目标是否存在,使用 followLinks 选项。
import java.nio.file.Files;
import java.nio.file.LinkOption;
import java.nio.file.Paths;
public class FollowLinksExample {
public static void main(String[] args) {
boolean exists = Files.exists(
Paths.get("path/to/symlink"),
LinkOption.NOFOLLOW_LINKS
);
System.out.println("符号链接存在: " + exists);
}
}
性能优化
频繁检查文件是否存在时,java.nio.file.Files 通常比 java.io.File 性能更好,尤其是在大量文件操作的场景中。







