diff --git a/platform/core-api/src/com/intellij/openapi/vfs/VfsUtilCore.java b/platform/core-api/src/com/intellij/openapi/vfs/VfsUtilCore.java index 71a830a4c007..9734068a9dc0 100644 --- a/platform/core-api/src/com/intellij/openapi/vfs/VfsUtilCore.java +++ b/platform/core-api/src/com/intellij/openapi/vfs/VfsUtilCore.java @@ -27,6 +27,7 @@ import com.intellij.util.Function; import com.intellij.util.PathUtil; import com.intellij.util.Processor; import com.intellij.util.containers.ContainerUtil; +import com.intellij.util.containers.Convertor; import com.intellij.util.containers.DistinctRootsCollection; import com.intellij.util.io.URLUtil; import com.intellij.util.text.StringFactory; @@ -550,4 +551,27 @@ public class VfsUtilCore { return VfsUtilCore.isAncestor(ancestor, virtualFile, false); } } + + public static void processFilesRecursively(@NotNull VirtualFile root, + @NotNull Processor processor, + @NotNull Convertor directoryFilter) { + if (!processor.process(root)) return; + + if (root.isDirectory() && directoryFilter.convert(root)) { + final LinkedList queue = new LinkedList(); + + queue.add(root.getChildren()); + + do { + final VirtualFile[] files = queue.removeFirst(); + + for (VirtualFile file : files) { + if (!processor.process(file)) return; + if (file.isDirectory() && directoryFilter.convert(file)) { + queue.add(file.getChildren()); + } + } + } while (!queue.isEmpty()); + } + } } diff --git a/platform/platform-api/src/com/intellij/openapi/vfs/VfsUtil.java b/platform/platform-api/src/com/intellij/openapi/vfs/VfsUtil.java index 7bc02081df30..d9f435594bbb 100644 --- a/platform/platform-api/src/com/intellij/openapi/vfs/VfsUtil.java +++ b/platform/platform-api/src/com/intellij/openapi/vfs/VfsUtil.java @@ -567,28 +567,6 @@ public class VfsUtil extends VfsUtilCore { }); } - public static void processFilesRecursively(@NotNull VirtualFile root, @NotNull Processor processor, - @NotNull Convertor directoryFilter) { - if (!processor.process(root)) return; - - if (root.isDirectory() && directoryFilter.convert(root)) { - final LinkedList queue = new LinkedList(); - - queue.add(root.getChildren()); - - do { - final VirtualFile[] files = queue.removeFirst(); - - for (VirtualFile file : files) { - if (!processor.process(file)) return; - if (file.isDirectory() && directoryFilter.convert(file)) { - queue.add(file.getChildren()); - } - } - } while (!queue.isEmpty()); - } - } - @Nullable public static T processInputStream(@NotNull final VirtualFile file, @NotNull Function function) { InputStream stream = null; @@ -598,7 +576,8 @@ public class VfsUtil extends VfsUtilCore { } catch (IOException e) { LOG.error(e); - } finally { + } + finally { try { if (stream != null) { stream.close();