web-dev-qa-db-fra.com

Vérifier si un chemin représente un fichier ou un dossier

J'ai besoin d'une méthode valide pour vérifier si une String représente un chemin pour un fichier ou un répertoire. Quels sont les noms de répertoire valides dans Android? Au fur et à mesure, les noms de dossier peuvent contenir des caractères '.'. Comment le système comprend-il s'il existe un fichier ou un dossier? Merci d'avance.

114
Egor

En supposant que path est votre String.

File file = new File(path);

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

Voir File Javadoc


Ou vous pouvez utiliser la classe NIO Files et vérifier les choses comme ceci:

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

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

Solution propre tout en restant avec l'API nio:

Files.isDirectory(path)
Files.isRegularFile(path)
41
pgsandstrom

Veuillez vous en tenir à l'API nio pour effectuer ces vérifications.

import Java.nio.file.*;

static Boolean isDir(Path path) {
  if (path == null || !Files.exists(path)) return false;
  else return Files.isDirectory(path);
}
19
Sheng
String path = "Your_Path";
File f = new File(path);

if (f.isDirectory()){



  }else if(f.isFile()){



  }
4

Pour vérifier si une chaîne représente un chemin d'accès ou un fichier par programme, vous devez utiliser des méthodes API telles que isFile(), isDirectory()..

Comment le système comprend-il s'il y a un fichier ou un dossier?

Je suppose que les entrées de fichier et de dossier sont conservées dans une structure de données et sont gérées par le système de fichiers.

2
Juvanis

Le système ne dispose d'aucun moyen pour vous dire si un String représente un file ou un directory s'il n'existe pas dans le système de fichiers. Par exemple: 

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

Et pour l'exemple suivant: 

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

Nous voyons donc que dans les deux cas, le système retourne false. Ceci est vrai pour Java.io.File et Java.nio.file.Path

1
Emdadul Sawon
   private static boolean isValidFolderPath(String path) {
    File file = new File(path);
    if (!file.exists()) {
      return file.mkdirs();
    }
    return true;
  }
0
Kaweesi Joseph
public static boolean isDirectory(String path) {
    return path !=null && new File(path).isDirectory();
}

Pour répondre directement à la question. 

0
gerardw