我正在使用uploadFileList()
将列表中的文件上传到S3中
因此,此API将列表(记录)作为参数,如下所示
MultipleFileUpload xfer = tm.uploadFileList(bucketName, "TEST",new File(fileLocation), records);
这样的列表中的记录
21564_114762642_ANA_9ECB7C98-C2D7-428A-B6AD-7A6C62E1A7BE_App.xml.gz
21224_114762642_ANA_9ECB7C98-C2D7-428A-B6AD-7A6C62E1A7BE_App.xml.gz
20780_114762642_ANA_9ECB7C98-C2D7-428A-B6AD-7A6C62E1A7BE_App.xml.gz
20407_114762642_ANA_9ECB7C98-C2D7-428A-B6AD-7A6C62E1A7BE_App.xml.gz
到目前为止,此方法工作正常。
现在我需要在API中添加前缀,因为文件名的前四位,例如21564
将是第一个文件的前缀
因此,要执行此操作,我必须遍历该列表并逐个文件添加文件,但是与上载列表相比,将使上载到S3的速度变慢。
将列表上传到S3时是否仍然要添加前缀,并且列表中的文件是随机的,但是模式是固定的?
答案 0 :(得分:0)
请参阅有关object keys的S3文档。由于S3存储桶是扁平的(不是文件系统层次结构),因此您可以告诉Amazon要用于上传文件的密钥前缀,从而将它们全部分组在同一前缀下。例如,我可以提供“ MovieReviews /”作为文件列表的前缀,并且S3中的结果对象键将以此开头。一些工具可以理解斜线,并允许您将S3存储桶作为目录层次结构进行浏览。
在您的情况下,如果文件应使用前N个字符作为分组关键字,则可以根据该子字符串进行第一个分组,例如以fileList.stream().collect(Collectors.groupingBy(s -> s.substring(0, N)))