From 1119a39dff6ffdb8ece0304ee79050c270227e4c Mon Sep 17 00:00:00 2001 From: zhaojun1998 Date: Tue, 1 Oct 2019 09:03:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8F=AA=E8=AF=BB=E5=8F=96?= =?UTF-8?q?=E5=89=8D=20N=20=E6=9D=A1=E7=9A=84=20BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhaojun/upyun/service/UpYunService.java | 39 ++++++++++++------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/src/main/java/im/zhaojun/upyun/service/UpYunService.java b/src/main/java/im/zhaojun/upyun/service/UpYunService.java index 38a467f..3786fa4 100644 --- a/src/main/java/im/zhaojun/upyun/service/UpYunService.java +++ b/src/main/java/im/zhaojun/upyun/service/UpYunService.java @@ -12,6 +12,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -43,27 +44,37 @@ public class UpYunService implements FileService { upYun = new UpYun(bucketName, username, password); } + @Override public List fileList(String path) throws Exception { ArrayList fileItems = new ArrayList<>(); - List folderItems = upYun.readDir(URLUtil.encode(path), null); + String nextMark = null; - if (folderItems != null) { - for (UpYun.FolderItem folderItem : folderItems) { - FileItem fileItem = new FileItem(); - fileItem.setName(folderItem.name); - fileItem.setSize(folderItem.size); - fileItem.setTime(folderItem.date); - fileItem.setPath(path); + do { + HashMap hashMap = new HashMap<>(); + hashMap.put("x-list-iter", nextMark); + hashMap.put("x-list-limit", "100"); + UpYun.FolderItemIter folderItemIter = upYun.readDirIter(URLUtil.encode(path), hashMap); + nextMark = folderItemIter.iter; + ArrayList folderItems = folderItemIter.files; + if (folderItems != null) { + for (UpYun.FolderItem folderItem : folderItems) { + FileItem fileItem = new FileItem(); + fileItem.setName(folderItem.name); + fileItem.setSize(folderItem.size); + fileItem.setTime(folderItem.date); + fileItem.setPath(path); - if ("Folder".equals(folderItem.type)) { - fileItem.setType(FileTypeEnum.FOLDER); - } else if ("File".equals(folderItem.type)) { - fileItem.setType(FileTypeEnum.FILE); + if ("folder".equals(folderItem.type)) { + fileItem.setType(FileTypeEnum.FOLDER); + } else { + fileItem.setType(FileTypeEnum.FILE); + } + fileItems.add(fileItem); } - fileItems.add(fileItem); } - } + } while (!"g2gCZAAEbmV4dGQAA2VvZg".equals(nextMark)); return fileItems; + } @Override