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