Chi*_*pal 12 amazon-s3 aws-sdk aws-java-sdk
这是我得到的警告:
S3AbortableInputStream:并非所有字节都从S3ObjectInputStream中读取,从而中止HTTP连接.这可能是错误,可能导致次优行为.通过范围GET仅请求您需要的字节或在使用后消耗输入流.
我尝试使用try with resources但是S3ObjectInputStream似乎没有通过此方法关闭.
try (S3Object s3object = s3Client.getObject(new GetObjectRequest(bucket, key));
S3ObjectInputStream s3ObjectInputStream = s3object.getObjectContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(s3ObjectInputStream, StandardCharsets.UTF_8));
){
//some code here blah blah blah
}
Run Code Online (Sandbox Code Playgroud)
我也试过下面的代码并明确关闭,但这也不起作用:
S3Object s3object = s3Client.getObject(new GetObjectRequest(bucket, key));
S3ObjectInputStream s3ObjectInputStream = s3object.getObjectContent();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(s3ObjectInputStream, StandardCharsets.UTF_8));
){
//some code here blah blah
s3ObjectInputStream.close();
s3object.close();
}
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
PS:我只从S3读取两行文件,文件中有更多数据.
Chi*_*pal 18
通过其他媒介得到答案.在这里分享:
警告表示您在不读取整个文件的情况下调用了close().这是有问题的,因为S3仍在尝试发送数据,而您正在将连接置于悲伤状态.
这里有两个选项:
小智 6
根据 Chirag Sejpal 的答案的选项#1,我使用以下语句来耗尽 S3AbortableInputStream 以确保可以重用连接:
com.amazonaws.util.IOUtils.drainInputStream(s3ObjectInputStream);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13092 次 |
最近记录: |