Как я могу проверить, существует ли файл, прежде чем открывать его для чтения на Java (эквивалент Perl-e $filename)?
Единственный похожий вопрос в SO касается записи файла, и поэтому на него был дан ответ с использованием FileWriter, который, очевидно, здесь неприменим.
Если возможно, я бы предпочел реальный вызов API, возвращающий true / false, в отличие от некоторого "Вызова API для открытия файла и перехвата, когда он выдает исключение, которое вы проверяете на "отсутствие файла" в тексте", но я могу смириться с последним.
Filef=newFile(filePathString); if(f.exists() && !f.isDirectory()) { // do something }
Ответ 2
Я бы рекомендовал использовать isFile() вместо exists(). Большую часть времени вы хотите проверить, указывает ли путь к файлу не только на то, что он существует. Помните, что exists() вернет true, если ваш путь указывает на каталог.
newFile("path/to/file.txt").isFile();
new File("C:/").exists() вернет true, но не позволит вам открывать и читать его как файл.
Ответ 3
С помощью nio в Java SE 7,
import java.nio.file.*;
Pathpath= 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 }