Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
Since moveDirectoryToDirectory performs a copy then delete, if you specify a target directory that is a subdirectory of the source, everything under the source directory is deleted.
Steps to recreate:
File dest = new File("/tmp/dir1/dir2");
File src = new File("/tmp/dir1/");
dest.mkdirs();
System.out.println(src.exists());
FileUtils.moveDirectoryToDirectory(src, dest, false);
System.out.println(src.exists());
Output:
true
false
If you try the same thing with a move command on Linux, you receive: "mv: cannot move `dir1/' to a subdirectory of itself, `dir1/dir2/dir1'"
Maybe throw an exception if dest.getCanonicalPath().startsWith(src.getCanonicalPath())