创建Path实例时抛出异常

时间:2018-08-27 20:56:06

标签: java file exception java.nio.file

我正在尝试通过使用环境变量在特定文件夹中创建Path的类的实例。这是我的代码:

Path pathName = Paths.get(System.getenv("USER") + "/AGENDA");
System.out.println(chemin);
    if(Files.exists(pathName)) {
      System.out.println("Directory already exists!");
    }
    else 
    {
        try {
            Files.createDirectories(pathName);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("Directory newly created!");
    }

我运行时,控制台显示:

/feujio/AGENDA
java.nio.file.AccessDeniedException: /feujio
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:384)
at java.nio.file.Files.createDirectory(Files.java:674)
at java.nio.file.Files.createAndCheckIsDirectory(Files.java:781)
at java.nio.file.Files.createDirectories(Files.java:767)
at File.FilePaths.createPath(FilePaths.java:44)
at File.FilePaths.main(FilePaths.java:63)

Directory newly created!

当我不使用环境变量时,它可以工作。我无法解释这种行为。

1 个答案:

答案 0 :(得分:0)

Files.createDirectory()的Javadoc:

  

创建一个新目录。检查文件是否存在以及是否创建目录(如果目录不存在)是单个操作,对于可能影响目录的所有其他文件系统活动而言,这是原子操作。 应在需要首先创建所有不存在的父目录的地方使用createDirectories方法。

     

[...]

     

如果发生I / O错误或父目录不存在,则抛出IOException

NoSuchFileExceptionIOException

这意味着my-username不是当前目录中的现有目录,无论当前目录是什么。