【发布时间】:2023-01-06 21:53:09
【问题描述】:
如果我没有关闭finally 子句中的s3object 怎么办?
下面的代码中没有资源泄漏吗?
class S3ClientClass {
lazy val amazonS3Client = this.getS3Client()
private def getS3Client() = {
AmazonS3ClientBuilder
.standard()
.withRegion(Regions.AP_NORTHEAST_1)
.build()
}
def readFromS3(s3Bucket: String, filepath: String): String = {
var s3object: S3Object = null
try {
s3object = amazonS3Client.getObject(s3Bucket, filepath)
readFromS3(s3object)
}
finally {
if (s3object != null) {
s3object.close()
}
}
}
def readFromS3(obj: S3Object): String = {
val reader = new BufferedReader(new InputStreamReader(obj.getObjectContent))
reader.lines().collect(Collectors.joining())
}
}
【问题讨论】:
标签: amazon-web-services scala aws-sdk aws-sdk-java-2.0