从AWS s3文件读取N个字节不读取N个字节

问题描述 投票:1回答:1

我正在尝试从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 = 0length = 32752

objectPortion.getObjectContent().read(data, doff, length);

返回16360,而data大小为32820,足以满足我想要的所有数据。

为什么会这样?为什么不返回所有数据?

我尝试下载的文件大小约为69kb

java amazon-web-services amazon-s3 aws-java-sdk
1个回答
0
投票

使用此代码段阅读全部内容:

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) {
    …
}
© www.soinside.com 2019 - 2024. All rights reserved.