首页 > 解决方案 > AWS S3 未返回指定数量的记录

问题描述

我通过指定范围从 S3 存储桶中读取文件。但它没有给我指定长度的数据并且总是给我更少的数据。这可能是由于 S3 在阅读时忽略/跳过了一些我无法理解的字符。

  val stringBuilder = new StringBuilder

  val s3Client = AmazonS3ClientBuilder.standard.withRegion("us-east-1").withCredentials(new ProfileCredentialsProvider).build
  val rangeObjectRequest = new GetObjectRequest("test_bucket", "test_key")
    .withRange(0, 25738)

  val s3object = s3Client.getObject(rangeObjectRequest)

  System.out.println(s3object.getObjectMetadata.getContentType)
  System.out.println("content length: " + s3object.getObjectMetadata.getContentLength)

  val reader = new BufferedReader(new InputStreamReader(s3object.getObjectContent))
  var line = ""

  while ({line = reader.readLine; line != null}) {
    System.out.println(line + "  \nLength: " + line.length)
    stringBuilder.append(line).append("\n")
  }

**Output:
binary/octet-stream
content length: 25739
< 3/4 of line read from the file printed here.>
Length: 25341**

如何从文件中读取指定数量的字节?如果我在没有指定范围的情况下读取文件,则打印整行没有任何问题。

标签: javascalaamazon-web-servicesfileamazon-s3

解决方案


推荐阅读