簡體   English   中英

aws s3列出的文件夾和文件僅適用於頂級(第一)Java

[英]aws s3 listing folders and files won't work only for top (first) level Java

我正在使用AWS S3。 我想使用get s3僅列出頂級文件夾和文件。 在特定路徑中:例如,假設我想獲取存儲桶中頂層的內容。

里面我有這個文件結構:

photos/2018/photo01.jpg
photos/2018/photo02.jpg
photos/2018/photo03.jpg
photos/2018/photo04.jpg
photos/2019/
docs/doc01.doc
docs/doc02.doc
random_file.txt

我只想獲取第一級的列表:

photos/
docs
random_file.txt

對於這些,我想從對象摘要結果中獲取信息。

所以我嘗試這樣做:

ListObjectsV2Result result = s3Client.listObjectsV2(bucketName);
List<S3ObjectSummary> objects = result.getObjectSummaries();
List<Object> list = new ArrayList<>();
for (S3ObjectSummary os : objects) {
     S3Object fullObject = s3Client.getObject(new GetObjectRequest(os.getBucketName(), os.getKey()));
     JSONObject data = new JSONObject();
     data.put("name", os.getKey());
     data.put("contentType", fullObject.getObjectMetadata().getContentType());
     data.put("size", os.getSize());
     list.add(data);
}

我得到了所有文件和文件夾的總列表。 我試圖使用withPrefix和withDelimiter來組合結果,但由於無法獲取而無法使用

AWS S3的數據模型實際上是一個平面層次結構; 沒有“頂層文件夾”或“子文件夾”的概念。 控制台只能通過使用/作為分隔符並在文件夾名稱中查找前綴來推斷結構。 請參閱AWS文檔 )。

您將添加自己的邏輯以查看文件名和結構,並推斷邏輯文件夾結構是什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM