Browse Source

REPORT-102146 fix: isDirectory方法某些场景判断不正确

release/11.0
Afly 2 years ago
parent
commit
0ae4e3674b
  1. 17
      src/main/java/com/fanruan/fs/s3/repository/core/S3ResourceRepository.java

17
src/main/java/com/fanruan/fs/s3/repository/core/S3ResourceRepository.java

@ -399,19 +399,16 @@ public class S3ResourceRepository extends BaseResourceRepository {
@Override @Override
public boolean isDirectory(String path) { public boolean isDirectory(String path) {
if (path.endsWith(DELIMITER)) {
if (path.endsWith(DELIMITER) && exist(path)) { return exist(path);
return true; } else {
}
ObjectListing listing = s3.listObjects(bucket, path); ObjectListing listing = s3.listObjects(bucket, path);
if (listing.getObjectSummaries().isEmpty()) { List<S3ObjectSummary> objectSummaries = listing.getObjectSummaries();
if (objectSummaries.isEmpty()) {
return false; return false;
} }
if (listing.getObjectSummaries().size() > 1) { String dirFormat = path + DELIMITER;
return true; return objectSummaries.stream().anyMatch(s3ObjectSummary -> StringUtils.equals(s3ObjectSummary.getKey(), dirFormat));
} else {
S3ObjectSummary summary = listing.getObjectSummaries().get(0);
return !StringKit.equals(listing.getPrefix(), summary.getKey());
} }
} }

Loading…
Cancel
Save