From 823feacae06af1a0a7dd43a54d09aa680a60ca20 Mon Sep 17 00:00:00 2001 From: Reinhard Pointner Date: Wed, 2 Nov 2016 19:29:05 +0800 Subject: [PATCH] Fix listFiles and formatSize issues --- .../net/filebot/cli/ScriptShellBaseClass.java | 6 ++++- .../net/filebot/cli/ScriptShellMethods.java | 4 +-- source/net/filebot/util/FileUtilities.java | 26 +++++++------------ 3 files changed, 16 insertions(+), 20 deletions(-) diff --git a/source/net/filebot/cli/ScriptShellBaseClass.java b/source/net/filebot/cli/ScriptShellBaseClass.java index 79154bd1..1a5506ef 100644 --- a/source/net/filebot/cli/ScriptShellBaseClass.java +++ b/source/net/filebot/cli/ScriptShellBaseClass.java @@ -457,7 +457,11 @@ public abstract class ScriptShellBaseClass extends Script { Object folder = parameters.get("folder"); if (folder != null) { - return listFiles(asFileList(folder), 0, FILES, HUMAN_NAME_ORDER); + List files = new ArrayList(); + for (File f : asFileList(folder)) { + files.addAll(getChildren(f, FILES, HUMAN_NAME_ORDER)); + } + return files; } return emptyList(); diff --git a/source/net/filebot/cli/ScriptShellMethods.java b/source/net/filebot/cli/ScriptShellMethods.java index e4af65f8..a5a411a7 100644 --- a/source/net/filebot/cli/ScriptShellMethods.java +++ b/source/net/filebot/cli/ScriptShellMethods.java @@ -131,7 +131,7 @@ public class ScriptShellMethods { } public static List listTree(File self, int maxDepth) { - return FileUtilities.listFiles(singleton(self), maxDepth, FILES, HUMAN_NAME_ORDER); + return FileUtilities.listFiles(new File[] { self }, maxDepth, FILES, HUMAN_NAME_ORDER); } public static List getFiles(File self) { @@ -172,7 +172,7 @@ public class ScriptShellMethods { public static List getFolders(Collection self, Closure closure) { List roots = FileUtilities.asFileList(self.toArray()); - List folders = FileUtilities.listFolders(roots, HUMAN_NAME_ORDER); + List folders = FileUtilities.listFiles(roots, FOLDERS, HUMAN_NAME_ORDER); if (closure != null) { folders = DefaultGroovyMethods.findAll(folders, closure); } diff --git a/source/net/filebot/util/FileUtilities.java b/source/net/filebot/util/FileUtilities.java index b237ea77..0e17b042 100644 --- a/source/net/filebot/util/FileUtilities.java +++ b/source/net/filebot/util/FileUtilities.java @@ -459,33 +459,25 @@ public final class FileUtilities { public static final int FILE_WALK_MAX_DEPTH = 32; public static List listFiles(File folder, FileFilter filter) { - return listFiles(singleton(folder), FILE_WALK_MAX_DEPTH, filter, null); + return listFiles(new File[] { folder }, FILE_WALK_MAX_DEPTH, filter, null); } public static List listFiles(File folder, FileFilter filter, Comparator order) { - return listFiles(singleton(folder), FILE_WALK_MAX_DEPTH, filter, order); + return listFiles(new File[] { folder }, FILE_WALK_MAX_DEPTH, filter, order); } - public static List listFiles(Iterable folders, FileFilter filter, Comparator order) { - return listFiles(folders, FILE_WALK_MAX_DEPTH, filter, order); + public static List listFiles(Collection folders, FileFilter filter, Comparator order) { + return listFiles(folders.toArray(new File[0]), FILE_WALK_MAX_DEPTH, filter, order); } - public static List listFolders(Iterable folders, Comparator order) { - return listFiles(folders, FILE_WALK_MAX_DEPTH, FOLDERS, order); - } - - public static List listFiles(Iterable folders, int depth, FileFilter filter, Comparator order) { + public static List listFiles(File[] files, int depth, FileFilter filter, Comparator order) { List sink = new ArrayList(); - for (File f : folders) { - if (f.isDirectory()) { - listFiles(f, sink, depth, filter, order); - } + // traverse file tree recursively + streamFiles(files, FOLDERS, order).forEach(f -> listFiles(f, sink, depth, filter, order)); - if (filter.accept(f)) { - sink.add(f); - } - } + // add selected files in preferred order + streamFiles(files, filter, order).forEach(sink::add); return sink; }