Recursively copy directory with symbolic link

The following modification will also recursively traverse the directory that the symbolic link points to.
This modification is not proposed for deleteRecursively, since it can be harmful if not intended.

This modification relates to the following commit:
Consistent use of NIO.2 for file read/write interactions
Issue: SPR-15748
12114a9
This commit is contained in:
Moran Avigdor 2020-03-31 14:04:55 +03:00 committed by Juergen Hoeller
parent 9f0ce09cf0
commit 7d5e474e0d
1 changed files with 3 additions and 1 deletions

View File

@ -24,8 +24,10 @@ import java.nio.file.Path;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.StandardCopyOption;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.EnumSet;
import org.springframework.lang.Nullable;
import static java.nio.file.FileVisitOption.FOLLOW_LINKS;
/**
* Utility methods for working with the file system.
@ -123,7 +125,7 @@ public abstract class FileSystemUtils {
BasicFileAttributes srcAttr = Files.readAttributes(src, BasicFileAttributes.class);
if (srcAttr.isDirectory()) {
Files.walkFileTree(src, new SimpleFileVisitor<Path>() {
Files.walkFileTree(src, EnumSet.of(FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
Files.createDirectories(dest.resolve(src.relativize(dir)));