diff --git a/src/main/org/apache/tools/ant/taskdefs/Sync.java b/src/main/org/apache/tools/ant/taskdefs/Sync.java index cca99e460..e22e40e6d 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Sync.java +++ b/src/main/org/apache/tools/ant/taskdefs/Sync.java @@ -240,9 +240,8 @@ public class Sync extends Task { // leaves before their parent nodes - thus making sure (well, // more likely) that the directories are empty when we try to // delete them. - Arrays.sort(dirs, Comparator.reverseOrder()); - for (String dir : dirs) { - File f = new File(toDir, dir); + for (int i = dirs.length - 1; i >= 0; --i) { + File f = new File(toDir, dirs[i]); String[] children = f.list(); if (children == null || children.length < 1) { log("Removing orphan directory: " + f, Project.MSG_DEBUG); @@ -257,9 +256,8 @@ public class Sync extends Task { fs.setDir(toDir); String[] preservedDirs = fs.getDirectoryScanner(getProject()).getIncludedDirectories(); - Arrays.sort(preservedDirs, Comparator.reverseOrder()); - for (String dir : preservedDirs) { - preservedDirectories.add(new File(toDir, dir)); + for (int i = preservedDirs.length - 1; i >= 0; --i) { + preservedDirectories.add(new File(toDir, preservedDirs[i])); } } diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java b/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java index b18878b96..4dfbce5c2 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java @@ -1808,8 +1808,8 @@ public class FTP extends Task implements FTPTaskConfig { if (action == RM_DIR) { // to remove directories, start by the end of the list // the trunk does not let itself be removed before the leaves - Arrays.sort(dsfiles, Comparator.reverseOrder()); - for (final String dsfile : dsfiles) { + for (int i = dsfiles.length - 1; i >= 0; i--) { + final String dsfile = dsfiles[i]; executeRetryable(h, () -> rmDir(ftp, dsfile), dsfile); } } else { diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/net/FTPTaskMirrorImpl.java b/src/main/org/apache/tools/ant/taskdefs/optional/net/FTPTaskMirrorImpl.java index 721b2e39b..f89d0f0d8 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/net/FTPTaskMirrorImpl.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/net/FTPTaskMirrorImpl.java @@ -1186,8 +1186,8 @@ public class FTPTaskMirrorImpl implements FTPTaskMirror { if (task.getAction() == FTPTask.RM_DIR) { // to remove directories, start by the end of the list // the trunk does not let itself be removed before the leaves - Arrays.sort(dsfiles, Comparator.reverseOrder()); - for (final String dsfile : dsfiles) { + for (int i = dsfiles.length - 1; i >= 0; i--) { + final String dsfile = dsfiles[i]; executeRetryable(h, () -> rmDir(ftp, dsfile), dsfile); } } else {