mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-10 18:09:38 +07:00
35 lines
859 B
HTML
35 lines
859 B
HTML
<html>
|
|
<body>
|
|
Reports usage of <code>VirtualFile.getChildren()</code> inside recursive methods.
|
|
<p>
|
|
This may cause endless loops when iterating over cyclic symlinks.
|
|
Use <code>VfsUtilCore.visitChildrenRecursively()</code> instead.
|
|
</p>
|
|
<pre><code lang="java">
|
|
void processDirectory(VirtualFile dir) {
|
|
for (VirtualFile file : dir.getChildren()) { // bad
|
|
if (!file.isDirectory()) {
|
|
processFile(file);
|
|
} else {
|
|
processDirectory(file); // recursive call
|
|
}
|
|
}
|
|
}
|
|
</code>
|
|
</pre>
|
|
<pre><code lang="java">
|
|
void processDirectory(VirtualFile dir) {
|
|
VfsUtilCore.visitChildrenRecursively(dir, new VirtualFileVisitor<Void>() { // good
|
|
@Override
|
|
public boolean visitFile(@NotNull VirtualFile file) {
|
|
if (!file.isDirectory()) {
|
|
processFile(file);
|
|
}
|
|
return true;
|
|
}
|
|
});
|
|
}
|
|
</code></pre>
|
|
</body>
|
|
</html>
|