Проверьте, является ли путь файлом или папкой

Мне нужен правильный метод, чтобы проверить, представляет ли String путь к файлу или каталогу. Какие допустимые имена каталогов в Android? Как оказалось, имена папок могут содержать '.' chars, так как система понимает, есть ли файл или папка?

Ответ 1

Предполагая, что path является вашим String.

File file = new File(path);

boolean exists =      file.exists();      // Check if the file exists
boolean isDirectory = file.isDirectory(); // Check if it a directory
boolean isFile =      file.isFile();      // Check if it a regular file

См. File Javadoc


Или вы можете использовать класс NIO Files и проверить такие вещи:

Path file = new File(path).toPath();

boolean exists =      Files.exists(file);        // Check if the file exists
boolean isDirectory = Files.isDirectory(file);   // Check if it a directory
boolean isFile =      Files.isRegularFile(file); // Check if it a regular file

Ответ 2

Очистите решение, оставаясь при помощи API nio:

Files.isDirectory(path)
Files.isRegularFile(path)

Ответ 3

Обратитесь к API-интерфейсу nio для выполнения этих проверок.

import java.nio.file.*;

static Boolean isDir(Path path) {
  if (path == null || !Files.exists(path)) return false;
  else return Files.isDirectory(path);
}

Ответ 4

String path = "Your_Path";
File f = new File(path);

if (f.isDirectory()){



  }else if(f.isFile()){



  }

Ответ 5

Чтобы проверить, содержит ли строка путь или файл программно, вы должны использовать методы API, такие как isFile(), isDirectory().

Как система понимает, есть ли файл или папка?

Я думаю, записи файлов и папок хранятся в структуре данных и управляются файловой системой.

Ответ 6

Невозможно сообщить системе, если String представляет file или directory, если не существует в файловой системе. Например:

Path path = Paths.get("/some/path/to/dir");
System.out.println(Files.isDirectory(path)); // return false
System.out.println(Files.isRegularFile(path)); // return false

И для следующего примера:

Path path = Paths.get("/some/path/to/dir/file.txt");
System.out.println(Files.isDirectory(path));  //return false
System.out.println(Files.isRegularFile(path));  // return false

Итак, мы видим, что в обоих случаях система возвращает false. Это верно как для java.io.File, так и java.nio.file.Path

Ответ 7

   private static boolean isValidFolderPath(String path) {
    File file = new File(path);
    if (!file.exists()) {
      return file.mkdirs();
    }
    return true;
  }

Ответ 8

public static boolean isDirectory(String path) {
    return path !=null && new File(path).isDirectory();
}

Чтобы ответить на вопрос напрямую.