Вопрос-ответ

How do I check if a file exists in Java?

Как мне проверить, существует ли файл на Java?

Как я могу проверить, существует ли файл, прежде чем открывать его для чтения на Java (эквивалент Perl -e $filename)?


Единственный похожий вопрос в SO касается записи файла, и поэтому на него был дан ответ с использованием FileWriter, который, очевидно, здесь неприменим.

Если возможно, я бы предпочел реальный вызов API, возвращающий true / false, в отличие от некоторого "Вызова API для открытия файла и перехвата, когда он выдает исключение, которое вы проверяете на "отсутствие файла" в тексте", но я могу смириться с последним.

Переведено автоматически
Ответ 1

Используя java.io.File:

File f = new File(filePathString);
if(f.exists() && !f.isDirectory()) {
// do something
}
Ответ 2

Я бы рекомендовал использовать isFile() вместо exists(). Большую часть времени вы хотите проверить, указывает ли путь к файлу не только на то, что он существует. Помните, что exists() вернет true, если ваш путь указывает на каталог.

new File("path/to/file.txt").isFile();

new File("C:/").exists() вернет true, но не позволит вам открывать и читать его как файл.

Ответ 3

С помощью nio в Java SE 7,

import java.nio.file.*;

Path path = Paths.get(filePathString);

if (Files.exists(path)) {
// file exist
}

if (Files.notExists(path)) {
// file is not exist
}

Если оба exists и notExists возвращают false, существование файла не может быть проверено. (возможно, нет права доступа к этому пути)

Вы можете проверить, path это каталог или обычный файл.

if (Files.isDirectory(path)) {
// path is directory
}

if (Files.isRegularFile(path)) {
// path is regular file
}

Пожалуйста, ознакомьтесь с этим руководством по Java SE 7.

Ответ 4

Использование Java 8:

if(Files.exists(Paths.get(filePathString))) { 
// do something
}
java