Warm tip: This article is reproduced from serverfault.com, please click

Why is IOUtils.closeQuietly deprecated?

发布于 2020-04-22 18:42:29

IOUtils.closeQuietly seems to be deprecated in favor of TryWithResources, but how can it help me when need to close the resource in an async event listener, likte this when i'm uploading files with AmazonS3 and TransferManager?

final String key = rs.getString("id");
final InputStream data = rs.getBinaryStream("data");
final long length = rs.getLong("length");
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentLength(length);

Upload upload = transferManager.upload(s3bucketName, key, data, objectMetadata);
upload.addProgressListener((com.amazonaws.event.ProgressListener) p -> {
    switch (p.getEventType()) {
    case TRANSFER_COMPLETED_EVENT:
    case TRANSFER_FAILED_EVENT:
    case TRANSFER_CANCELED_EVENT:
        IOUtils.closeQuietly(data);
    default:
        break;
    }
});
Questioner
wutzebaer
Viewed
0
Jamie Bisotti 2020-12-03 04:22:49

This is the Jira issue that deprecated it. Based on the last few comments, from October 2020, looks like it is being un-deprecated.