Проверка наличия файла или каталога в Java
5 ответов
!Files.exists() возвращает:
-
trueесли файл не существует или его существование не может быть определено -
falseесли существует файл
Files.notExists() возвращает:
-
trueесли файл не существует -
falseЕсли файл существует и его существование не может быть определено
как мы видим из файлы.существует обратный результат:
TRUE if the file exists;
FALSE if the file does not exist or its existence cannot be determined.
и файлы.notExists обратный результат:
TRUE if the file does not exist;
FALSE if the file exists or its existence cannot be determined
если !Files.exists(path) возвращение TRUE означает, что он не существует или существование не может быть определено (2 возможности) и Files.notExists(path) возвращение TRUE означает, что он не существует (только 1 возможность).
вывод !Files.exists(path) != Files.notExists(path) или 2 possibilities not equals to 1 possibility (см. объяснение выше про возможности).
глядя в исходном коде на различия, они оба делают то же самое с 1 большой разницей. The notExist(...) метод имеет дополнительное исключение для перехвата.
Exist:
public static boolean exists(Path path, LinkOption... options) {
try {
if (followLinks(options)) {
provider(path).checkAccess(path);
} else {
// attempt to read attributes without following links
readAttributes(path, BasicFileAttributes.class,
LinkOption.NOFOLLOW_LINKS);
}
// file exists
return true;
} catch (IOException x) {
// does not exist or unable to determine if file exists
return false;
}
}
Нет:
public static boolean notExists(Path path, LinkOption... options) {
try {
if (followLinks(options)) {
provider(path).checkAccess(path);
} else {
// attempt to read attributes without following links
readAttributes(path, BasicFileAttributes.class,
LinkOption.NOFOLLOW_LINKS);
}
// file exists
return false;
} catch (NoSuchFileException x) {
// file confirmed not to exist
return true;
} catch (IOException x) {
return false;
}
}
в результате различия следующие:
!exists(...)возвращает файл не существует, еслиIOExceptionвыбрасывается при попытке получить файл.notExists(...)возвращает файл как несуществующий, убедившись, что конкретныйIOExceptionsubexceptionNoSuchFileFoundне выдается, и что он не subexception наIOExceptionвызывая не найден результат
С Oracle docs of notExists.
обратите внимание, что этот метод не является дополнением метода exists. где невозможно определить, существует ли файл или нет, то оба метода возвращают false. ...
мой подсветка.
вы можете просто указать абсолютный путь, если каталог/каталоги не выходит, он создаст каталог/каталоги.
private void createDirectoryIfNeeded(String directoryName)
{
File theDir = new File(directoryName);
if (!theDir.exists())
theDir.mkdirs();
}