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;
}
});
}