簡體   English   中英

Amazon AWS S3存儲桶遞歸獲取

[英]Amazon AWS S3 bucket recursive fetch

我正在使用Amazon S3 Java庫連接到S3存儲桶並獲取文件列表。 我需要遞歸瀏覽該目錄。 這樣做時,如果遇到文件,則需要下載它。 如何在S3中區分目錄和文件。

這是我的代碼片段

AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
AmazonS3 s3Client = new AmazonS3Client(credentials);
ObjectListing objectsListing = s3Client.listObjects(new ListObjectsRequest(bucketName, prefix, null, null, Integer.MAX_VALUE));

一旦獲得上層目錄的對象列表,就需要獲取目錄和文件的列表並進行處理

如果有辦法,請幫我解決這個問題

謝謝

S3確實沒有“目錄”。 如果願意,可以使用setDelimitergetCommonPrefixes假裝類似,但是默認行為是列出存儲桶中的所有對象,而不管它們的鍵是否包含'/'。

如果要使用AmazonS3Client滾動下載代碼,則值得注意的是,即使您要求更多,S3一次最多也可以從listObjects返回1000個鍵。 您將要檢查ObjectListing上的IsTruncated標志,以及是否設置了循環,並發送另一個帶有Marker的請求以獲取下一頁結果。

最后但並非最不重要的一點是,我將為TransferManager類插入一個插件,該類的downloadDirectory方法(帶有keyPrefix的“”)聽起來像只用一行代碼就能完成您想要的?

S3中沒有文件夾或目錄。 諸如“ abc / pqr / mno.pdf”之類的文件名表示為mno.pdf,其中pqr文件夾與abc中的文件夾相同,但實際上它代表名稱為“ abc / pqr / mno.pdf”的單個文件。

因此,遞歸訪問邏輯應該進入正在訪問文件的應用程序中。 應該為getObject方法提供完整路徑,例如“ abc / pqr / mno.pdf”,以獲取文件mno.pdf

暫無
暫無

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

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