mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
moved to core
This commit is contained in:
@@ -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<VirtualFile> processor,
|
||||
@NotNull Convertor<VirtualFile, Boolean> directoryFilter) {
|
||||
if (!processor.process(root)) return;
|
||||
|
||||
if (root.isDirectory() && directoryFilter.convert(root)) {
|
||||
final LinkedList<VirtualFile[]> queue = new LinkedList<VirtualFile[]>();
|
||||
|
||||
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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -567,28 +567,6 @@ public class VfsUtil extends VfsUtilCore {
|
||||
});
|
||||
}
|
||||
|
||||
public static void processFilesRecursively(@NotNull VirtualFile root, @NotNull Processor<VirtualFile> processor,
|
||||
@NotNull Convertor<VirtualFile, Boolean> directoryFilter) {
|
||||
if (!processor.process(root)) return;
|
||||
|
||||
if (root.isDirectory() && directoryFilter.convert(root)) {
|
||||
final LinkedList<VirtualFile[]> queue = new LinkedList<VirtualFile[]>();
|
||||
|
||||
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> T processInputStream(@NotNull final VirtualFile file, @NotNull Function<InputStream, T> 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();
|
||||
|
||||
Reference in New Issue
Block a user