Как проверить, существует ли папка
Я немного играю с новыми функциями Java 7 IO, на самом деле я пытаюсь получить все xml файлы в папке. Но это вызывает исключение, когда папка не существует, как я могу проверить, существует ли папка с новым IO?
public UpdateHandler(String release) {
log.info("searching for configuration files in folder " + release);
Path releaseFolder = Paths.get(release);
try(DirectoryStream<Path> stream = Files.newDirectoryStream(releaseFolder, "*.xml")){
for (Path entry: stream){
log.info("working on file " + entry.getFileName());
}
}
catch (IOException e){
log.error("error while retrieving update configuration files " + e.getMessage());
}
}
Ответы
Ответ 1
Использование java.nio.file.Files
:
Path path = ...;
if (Files.exists(path)) {
// ...
}
Вы можете опционально передать этот метод LinkOption
значения:
if (Files.exists(path, LinkOption.NOFOLLOW_LINKS)) {
Также существует метод notExists
:
if (Files.notExists(path)) {
Ответ 2
Довольно просто:
new File("/Path/To/File/or/Directory").exists();
И если вы хотите быть уверенным, что это каталог:
File f = new File("/Path/To/File/or/Directory");
if (f.exists() && f.isDirectory()) {
...
}
Ответ 3
Чтобы проверить, существует ли каталог с новым IO:
if (Files.isDirectory(Paths.get("directory"))) {
...
}
isDirectory
возвращает true
, если файл является каталогом; false
, если файл не существует, не является каталогом или не может быть определено, является ли файл каталогом или нет.
Смотрите: документация.
Ответ 4
Вам нужно преобразовать свой Путь в File
и проверить наличие:
for(Path entry: stream){
if(entry.toFile().exists()){
log.info("working on file " + entry.getFileName());
}
}
Ответ 5
Сгенерировать файл из строки каталога вашей папки
String path="Folder directory";
File file = new File(path);
и метод использования существует.
Если вы хотите создать папку, в которой вы можете использовать mkdir()
if (!file.exists()) {
System.out.print("No Folder");
file.mkdir();
System.out.print("Folder created");
}
Ответ 6
Нет необходимости отдельно вызывать метод exists()
, поскольку isDirectory()
неявно проверяет, существует ли каталог или нет.
Ответ 7
import java.io.File;
import java.nio.file.Paths;
public class Test
{
public static void main(String[] args)
{
File file = new File("C:\\Temp");
System.out.println("File Folder Exist" + isFileDirectoryExists(file));
System.out.println("Directory Exists" + isDirectoryExists("C:\\Temp"));
}
public static boolean isFileDirectoryExists(File file)
{
if (file.exists())
{
return true;
}
return false;
}
public static boolean isDirectoryExists(String directoryPath)
{
if (!Paths.get(directoryPath).toFile().isDirectory())
{
return false;
}
return true;
}
}
Ответ 8
File sourceLoc=new File("/a/b/c/folderName");
boolean isFolderExisted=false;
sourceLoc.exists()==true?sourceLoc.isDirectory()==true?isFolderExisted=true:isFolderExisted=false:isFolderExisted=false;
Ответ 9
Мы можем проверять файлы и блокировать папки.
import java.io.*;
public class fileCheck
{
public static void main(String arg[])
{
File f = new File("C:/AMD");
if (f.exists() && f.isDirectory()) {
System.out.println("Exists");
//if the file is present then it will show the msg
}
else{
System.out.println("NOT Exists");
//if the file is Not present then it will show the msg
}
}
}
Ответ 10
Из SonarLint, если у вас уже есть путь, используйте path.toFile().exists()
вместо Files.exists
для повышения производительности.
Метод Files.exists
имеет заметно низкую производительность в JDK 8 и может значительно замедлить приложение, когда используется для проверки файлов, которые на самом деле не существуют.
То же самое касается Files.notExists
, Files.isDirectory
и Files.isRegularFile
.
Пример несовместимого кода:
Path myPath;
if(java.nio.Files.exists(myPath)) { // Noncompliant
// do something
}
Совместимое решение:
Path myPath;
if(myPath.toFile().exists())) {
// do something
}