java.nio.file.Files の createDirectories

Files.createDirectory(Path path) は、path 生成元に存在しないディレクトリがあれば、
java.nio.file.FileAlreadyExistsException を発生するが、

createDirectories なら、ディレクトリ作成できる権限、環境なら途中も生成
で作ってくれる。

try{
    Path path = Paths.get("/work", "tempA", "tempB");

    Path cpath = Files.createDirectories(path);

    String creatTimeString = Files.getAttribute(cpath, "creationTime").toString();
    LocalDateTime creatTime = LocalDateTime.parse(creatTimeString
        , DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'")).plusHours(9);

    String lastModifiedString = Files.getAttribute(cpath, "lastModifiedTime").toString();
    LocalDateTime lastModified = LocalDateTime.parse(lastModifiedString
        , DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'")).plusHours(9);

    String lastAccessString = Files.getAttribute(cpath, "lastAccessTime").toString();
    LocalDateTime lastAccess = LocalDateTime.parse(lastAccessString
        , DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'")).plusHours(9);

    System.out.println(creatTime);
    System.out.println(lastModified);
    System.out.println(lastAccess);

    Map<String, Object> map = Files.readAttributes(path, "*");
    map.entrySet().stream().forEach(e->{
        System.out.println(e.getKey() + " -> " +e.getValue());
    });
}catch(IOException e){
    e.printStackTrace();
}

このサンプルのように、Files.getAttribute で取得する属性で、
作成時刻
最終更新時刻
最終アクセス時刻
は、yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z' の形式で、Object で取得することになる。
Asia/Tokyo への時刻にしたいから、plusHours(9) で補正している。
Files.readAttributes(path, "*") で全ての読み取れる属性を参照可能である。
このサンプル、Windows で実行した結果は、、

2022-05-08T10:48:23.925949
2022-05-08T10:48:23.925949
2022-05-08T12:47:25.801253
lastAccessTime -> 2022-05-08T03:47:25.801253Z
lastModifiedTime -> 2022-05-08T01:48:23.925949Z
size -> 0
creationTime -> 2022-05-08T01:48:23.925949Z
isSymbolicLink -> false
isRegularFile -> false
fileKey -> null
isOther -> false
isDirectory -> true