我正在尝试从AWS S3存储桶中的文件读取N个字节并将其写入缓冲区,但是,当我尝试这样做时,返回的字节数不是N,而是少得多,并且在多次调用后有所不同。
我正在做的是:
public int readData(byte[] data, int doff, long offset, int length, String bucketName, String fileName) throws IOException {
GetObjectRequest rangeObjectRequest = new GetObjectRequest(bucketName, fileName)
.withRange(offset, length);
S3Object objectPortion = S3_CLIENT.getObject(rangeObjectRequest);
return objectPortion.getObjectContent().read(data, doff, length);
}
[当offset = 0
和length = 32752
时
objectPortion.getObjectContent().read(data, doff, length);
返回16360
,而data
大小为32820,足以满足我想要的所有数据。
为什么会这样?为什么不返回所有数据?
我尝试下载的文件大小约为69kb
使用此代码段阅读全部内容:
try (S3ObjectInputStream is = objectPortion.getObjectContent()) {
byte[] buf = new byte[4096];
int read = 0;
while ((read = is.read(buf)) >= 0) {
// use buf / read values
}
} catch (Exception e) {
…
}