S3 CommonPrefix无法转为String:数组存储及取值方法咨询
解决AWS S3 CommonPrefix无法转为String的问题
报错原因很明确:CommonPrefix是AWS S3 SDK提供的实体类,不是字符串类型,直接强制类型转换肯定会失败。要拿到前缀字符串,调用它的prefix()方法就行(AWS SDK v2采用无get前缀的API风格)。
把你原来的循环代码改成下面两种方式都可以:
方式一:遍历CommonPrefix类型(最直观)
List<CommonPrefix> allKeysInDesiredBucket = listAllKeysInABucket(bucketName, bucketPath); array = new String[allKeysInDesiredBucket.size()]; int index = 0; // 直接遍历CommonPrefix,不用Object for (CommonPrefix prefix : allKeysInDesiredBucket) { array[index] = prefix.prefix(); // 获取前缀字符串 index++; }
方式二:用Java Stream简化代码
List<CommonPrefix> allKeysInDesiredBucket = listAllKeysInABucket(bucketName, bucketPath); // 一行代码生成String数组 String[] array = allKeysInDesiredBucket.stream() .map(CommonPrefix::prefix) .toArray(String[]::new);
处理后,array里就存了所有前缀字符串,后续调用s3Service.getBucketObjects时就不会有类型问题了。
内容的提问来源于stack exchange,提问作者jack
相关产品推荐
相关产品推荐

