재귀 메서드 내 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;
    }
  });
}