昔だとディレクトリ内のファイル一覧を取得して、ファイルならコピー、ディレクトリーならサブディレクトリー内を検索、、、といった具合に再帰的なプログラムを書いていたけど、Java7 からは下記のプログラムでできるようになった。
Java7 以上の場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
private void copy(Path source, Path target) throws IOException { if (Files.exists(source)) { Files.walkFileTree(source, new SimpleFileVisitor<Path>() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { Path targetFile = target.resolve(source.relativize(file)); Path parentDir = targetFile.getParent(); Files.createDirectories(parentDir); Files.copy(file, targetFile, StandardCopyOption.REPLACE_EXISTING); return FileVisitResult.CONTINUE; } } ); } } |