Я читаю файл из корзины 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**
Как прочитать указанное количество байтов из файла? Если я читаю файл без указания диапазона, вся строка печатается без каких-либо проблем.