From d11cfdb356d93e1d0dfba739dee9458a43b67e19 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Mon, 17 Dec 2018 01:25:02 -0800 Subject: paginate through large folders --- .../src/main/java/seaweedfs/client/FilerClient.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'other/java/client/src') diff --git a/other/java/client/src/main/java/seaweedfs/client/FilerClient.java b/other/java/client/src/main/java/seaweedfs/client/FilerClient.java index 8414ee303..ff84b053f 100644 --- a/other/java/client/src/main/java/seaweedfs/client/FilerClient.java +++ b/other/java/client/src/main/java/seaweedfs/client/FilerClient.java @@ -5,6 +5,7 @@ import org.slf4j.LoggerFactory; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -137,7 +138,23 @@ public class FilerClient { } public List listEntries(String path) { - return listEntries(path, "", "", 100000); + List results = new ArrayList(); + String lastFileName = ""; + for (int limit = Integer.MAX_VALUE; limit > 0; ) { + List t = listEntries(path, "", lastFileName, 1024); + if (t == null) { + break; + } + int nSize = t.size(); + if (nSize > 0) { + limit -= nSize; + lastFileName = t.get(nSize - 1).getName(); + } + if (t.size() < 1024) { + break; + } + } + return results; } public List listEntries(String path, String entryPrefix, String lastEntryName, int limit) { -- cgit v1.2.3