我正在尝试一些新的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());
    }
}

当前回答

不需要单独调用exists()方法,因为isDirectory()隐式地检查目录是否存在。

其他回答

不需要单独调用exists()方法,因为isDirectory()隐式地检查目录是否存在。

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;
  }

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

使用java.nio.file.Files:

Path path = ...;

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

你可以选择将LinkOption值传递给这个方法:

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

还有一个方法notExists:

if (Files.notExists(path)) {

使用实例检查新IO目录是否存在。

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

如果文件是目录,isDirectory返回true;如果文件不存在,不是目录,或者无法确定该文件是否是目录,则为False。

看:文档。