VirtualFile.getChildren()
的用法。
对循环符号链接迭代时,这可能导致无限循环。
请改用 VfsUtilCore.visitChildrenRecursively()
。
void processDirectory(VirtualFile dir) {
for (VirtualFile file : dir.getChildren()) { // 错误
if (!file.isDirectory()) {
processFile(file);
} else {
processDirectory(file); // 递归调用
}
}
}
void processDirectory(VirtualFile dir) {
VfsUtilCore.visitChildrenRecursively(dir, new VirtualFileVisitor<Void>() { // 正确
@Override
public boolean visitFile(@NotNull VirtualFile file) {
if (!file.isDirectory()) {
processFile(file);
}
return true;
}
});
}