174 votes

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

J'ai besoin d'une méthode valide pour vérifier si un String représente un chemin pour un fichier ou un répertoire. Quels sont les noms de répertoire valides dans Android ? Il s'avère que les noms de dossiers peuvent contenir '.' alors comment le système peut-il comprendre s'il s'agit d'un fichier ou d'un dossier ?

255voto

Baz Points 17236

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 des choses comme ça :

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

64voto

pgsandstrom Points 5085

Solution propre tout en restant avec l'API nio :

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

21voto

Sheng Points 1103

Veuillez vous en tenir à l'API nio pour effectuer ces contrôles.

import java.nio.file.*;

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

9voto

Emdadul Sawon Points 2362

Il n'y a aucun moyen pour le système de vous dire si une String représentent un file ou directory si elle 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 renvoie false. Ceci est vrai pour les deux java.io.File y java.nio.file.Path

4voto

Kumar Vivek Mitra Points 19369
String path = "Your_Path";
File f = new File(path);

if (f.isDirectory()){

  }else if(f.isFile()){

  }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X