236 votes

Comment vérifier si un dossier existe

Je joue un peu avec les nouvelles fonctionnalités de Java 7 IO. En fait, j'essaie de recevoir tous les fichiers XML d'un dossier. Mais cela lève une exception lorsque le dossier n'existe pas, comment puis-je vérifier si le dossier existe avec le nouvel 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());
    }


}
 

313voto

Jesper Points 65733

Utilisation de java.nio.file.Files :

 Path path = ...;

if (Files.exists(path)) {
    // ...
}
 

Vous pouvez éventuellement transmettre cette méthode aux valeurs LinkOption :

 if (Files.exists(path, LinkOption.NOFOLLOW_LINKS)) {
 

Il existe également une méthode notExists :

 if (Files.notExists(path)) {
 

233voto

Chris Cooper Points 1956

Assez facile:

 new File("/Path/To/File/or/Directory").exists();
 

Et si vous voulez être certain que c'est un répertoire:

 File f = new File("/Path/To/File/or/Directory");
if (f.exists() && f.isDirectory()) {
   ...
}
 

58voto

Fernando Correia Points 7410

Pour vérifier si un répertoire existe avec le nouvel IO:

 if (Files.isDirectory(Paths.get("directory"))) {
  ...
}
 

isDirectory renvoie true si le fichier est un répertoire; false si le fichier n'existe pas, n'est pas un répertoire ou s'il est impossible de déterminer si le fichier est un répertoire ou non.

Voir: documentation .

6voto

bvidal Points 656

Vous devez transformer votre chemin en File et tester votre existence:

 for(Path entry: stream){
  if(entry.toFile().exists()){
    log.info("working on file " + entry.getFileName());
  }
}
 

1voto

Arun Rvrjc Points 373
File sourceLoc=new File("/a/b/c/folderName");
boolean isFolderExisted=false;
sourceLoc.exists()==true?sourceLoc.isDirectory()==true?isFolderExisted=true:isFolderExisted=false:isFolderExisted=false;

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