Google Cloud Storage:通过Java中Storage.list返回的索引访问blob页面

问题描述 投票:0回答:1

我在 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-cloud-platform google-cloud-storage gcs
1个回答
0
投票

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.
© www.soinside.com 2019 - 2024. All rights reserved.