aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/utils/FileUtils.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/utils/FileUtils.java')
-rw-r--r--main/src/cgeo/geocaching/utils/FileUtils.java10
1 files changed, 8 insertions, 2 deletions
diff --git a/main/src/cgeo/geocaching/utils/FileUtils.java b/main/src/cgeo/geocaching/utils/FileUtils.java
index 8846345..778b9c7 100644
--- a/main/src/cgeo/geocaching/utils/FileUtils.java
+++ b/main/src/cgeo/geocaching/utils/FileUtils.java
@@ -24,6 +24,7 @@ import java.util.List;
*/
public final class FileUtils {
+ private static final int MAX_DIRECTORY_SCAN_DEPTH = 30;
private static final String FILE_PROTOCOL = "file://";
private FileUtils() {
@@ -31,7 +32,10 @@ public final class FileUtils {
}
public static void listDir(final List<File> result, final File directory, final FileSelector chooser, final Handler feedBackHandler) {
+ listDirInternally(result, directory, chooser, feedBackHandler, 0);
+ }
+ private static void listDirInternally(final List<File> result, final File directory, final FileSelector chooser, final Handler feedBackHandler, final int depths) {
if (directory == null || !directory.isDirectory() || !directory.canRead()
|| result == null
|| chooser == null) {
@@ -64,7 +68,9 @@ public final class FileUtils {
feedBackHandler.sendMessage(Message.obtain(feedBackHandler, 0, name));
}
- listDir(result, file, chooser, feedBackHandler); // go deeper
+ if (depths < MAX_DIRECTORY_SCAN_DEPTH) {
+ listDirInternally(result, file, chooser, feedBackHandler, depths + 1); // go deeper
+ }
}
}
}
@@ -198,7 +204,7 @@ public final class FileUtils {
/**
* Local file name when {@link #isFileUrl(String)} is <tt>true</tt>.
- *
+ *
* @return the local file
*/
public static File urlToFile(final String url) {