java - 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**
如何从文件中读取指定数量的字节?如果我在没有指定范围的情况下读取文件,则打印整行没有任何问题。
解决方案
推荐阅读
- kotlin - 有没有办法了解协程被取消时在做什么?
- sql - PostgreSQL 列中 POINT 和 LINESTRING 对象的混合。如何从 LINESTRING 中提取 POINT 和 first 点?
- python - 读取 .bag 文件时帧未在 5000 内到达 - pyrealsense2
- apache-spark - Spark - 模仿更新语义的最有效方法
- xml - Oracle - 针对 XSD 验证 XML 中的日期格式 (yyyy-mm-ddThh24:mi:ssZ)
- mysql - Mysql创建视图,逐步增加一个日期时间字段
- azure - Azure REST API - 使用高级磁盘和临时磁盘支持信息/筛选器列出 vm 大小
- apache-spark - 创建火花上下文时样条线谱系失败
- python - 如何将一系列数值数据转换为特定的分类数据?
- python - 如何将默认值归入 Pandas 数据框列?