diff --git a/source/net/filebot/cli/CmdlineOperations.java b/source/net/filebot/cli/CmdlineOperations.java index 21e636de..887e9792 100644 --- a/source/net/filebot/cli/CmdlineOperations.java +++ b/source/net/filebot/cli/CmdlineOperations.java @@ -600,7 +600,7 @@ public class CmdlineOperations implements CmdlineInterface { destination = resolve(source, destination); } - if (!destination.equals(source) && destination.exists()) { + if (!destination.equals(source) && existsNoFollowLinks(destination)) { if (conflictAction == ConflictAction.FAIL) { throw new CmdlineException(String.format("Failed to process [%s] because [%s] already exists", source, destination)); } diff --git a/source/net/filebot/util/FileUtilities.java b/source/net/filebot/util/FileUtilities.java index 7bafea51..59ad6777 100644 --- a/source/net/filebot/util/FileUtilities.java +++ b/source/net/filebot/util/FileUtilities.java @@ -159,6 +159,10 @@ public final class FileUtilities { return destination.toFile(); } + public static boolean existsNoFollowLinks(File file) { + return Files.exists(file.toPath(), LinkOption.NOFOLLOW_LINKS); + } + public static void delete(File file) throws IOException { if (file.isDirectory()) { Files.walkFileTree(file.toPath(), new SimpleFileVisitor() { @@ -620,8 +624,7 @@ public final class FileUtilities { /** * Strip file name of invalid characters * - * @param filename - * original filename + * @param filename original filename * @return valid file name stripped of invalid characters */ public static String validateFileName(CharSequence filename) {