我在 Java 中有以下函数可以从云存储中获取 blob 列表。
Page<Blob> blobs = storage.list(bucketName,
Storage.BlobListOption.prefix("80448357-e1b5-44e1-9554-b5b7321b42c3" + "/" + "b5ac6031-6593-4ae3-9d76-6605cfb36304" + "/" + "requests/")
);
我想使用开始和结束偏移量来访问带有索引的特定 blob。
例如
Page<Blob> blobs = storage.list(bucketName,
Storage.BlobListOption.prefix("80448357-e1b5-44e1-9554-b5b7321b42c3" + "/" + "b5ac6031-6593-4ae3-9d76-6605cfb36304" + "/" + "requests/")
Storage.BlobListOption.endOffset("80448357-e1b5-44e1-9554-b5b7321b42c3" + "/" + "b5ac6031-6593-4ae3-9d76-6605cfb36304" + "/" + "requests/" + "79679696979")
);
现在它将返回页面,但我想获得最后 5 个结果,例如假设它返回了
80448357-e1b5-44e1-9554-b5b7321b42c3/b5ac6031-6593-4ae3-9d76-6605cfb36304/requests/79179696979/123.txt
80448357-e1b5-44e1-9554-b5b7321b42c3/b5ac6031-6593-4ae3-9d76-6605cfb36304/requests/79279696979/123.txt
80448357-e1b5-44e1-9554-b5b7321b42c3/b5ac6031-6593-4ae3-9d76-6605cfb36304/requests/79379696979/123.txt
80448357-e1b5-44e1-9554-b5b7321b42c3/b5ac6031-6593-4ae3-9d76-6605cfb36304/requests/79479696979/123.txt
80448357-e1b5-44e1-9554-b5b7321b42c3/b5ac6031-6593-4ae3-9d76-6605cfb36304/requests/79579696979/123.txt
80448357-e1b5-44e1-9554-b5b7321b42c3/b5ac6031-6593-4ae3-9d76-6605cfb36304/requests/79679696979/123.txt
但我只想获得最后 5 个结果,例如并按此顺序。
80448357-e1b5-44e1-9554-b5b7321b42c3/b5ac6031-6593-4ae3-9d76-6605cfb36304/requests/79279696979/123.txt
80448357-e1b5-44e1-9554-b5b7321b42c3/b5ac6031-6593-4ae3-9d76-6605cfb36304/requests/79379696979/123.txt
80448357-e1b5-44e1-9554-b5b7321b42c3/b5ac6031-6593-4ae3-9d76-6605cfb36304/requests/79479696979/123.txt
80448357-e1b5-44e1-9554-b5b7321b42c3/b5ac6031-6593-4ae3-9d76-6605cfb36304/requests/79579696979/123.txt
80448357-e1b5-44e1-9554-b5b7321b42c3/b5ac6031-6593-4ae3-9d76-6605cfb36304/requests/79679696979/123.txt
是否有一种本机方法可以实现此目的,或者是否有某种方法可以将 Page 转换为 ArrayList,以便我可以自己进行此操作?
google提供了一个库可以帮助我们轻松实现这一点。
com.google.http-client:google-http-client
https://mvnrepository.com/artifact/com.google.http-client/google-http-client
import com.google.api.client.util.Lists;
Page<Blob> blobs = storage.list(bucketName,
Storage.BlobListOption.prefix("80448357-e1b5-44e1-9554-b5b7321b42c3" + "/" + "b5ac6031-6593-4ae3-9d76-6605cfb36304" + "/" + "requests/")
Storage.BlobListOption.endOffset("80448357-e1b5-44e1-9554-b5b7321b42c3" + "/" + "b5ac6031-6593-4ae3-9d76-6605cfb36304" + "/" + "requests/" + "79679696979")
);
List<Blob> blobList = Lists.newArrayList(blobs.iterateAll());
// Can do manipulation and get result the way we want.