Java AWS S3未返回指定数量的记录
我通过指定范围从S3 bucket读取文件。但它并没有给我指定长度的数据,总是给我更少的数据。这可能是因为S3在阅读时忽略/跳过了一些字符,我不明白为什么Java AWS S3未返回指定数量的记录,java,scala,amazon-web-services,file,amazon-s3,Java,Scala,Amazon Web Services,File,Amazon S3,我通过指定范围从S3 bucket读取文件。但它并没有给我指定长度的数据,总是给我更少的数据。这可能是因为S3在阅读时忽略/跳过了一些字符,我不明白为什么 val stringBuilder = new StringBuilder val s3Client = AmazonS3ClientBuilder.standard.withRegion("us-east-1").withCredentials(new ProfileCredentialsProvider).build val
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**
val stringBuilder=新建stringBuilder
val s3Client=AmazonS3ClientBuilder.standard.withRegion(“us-east-1”)。withCredentials(新的ProfileCredentialsProvider)。build
val rangeObjectRequest=新的GetObjectRequest(“测试桶”、“测试键”)
.范围(0,25738)
val s3object=s3Client.getObject(rangeObjectRequest)
System.out.println(s3object.getObjectMetadata.getContentType)
System.out.println(“内容长度:+s3object.getObjectMetadata.getContentLength”)
val reader=new BufferedReader(新的InputStreamReader(s3object.getObjectContent))
var line=“”
而({line=reader.readLine;line!=null}){
System.out.println(行+“\n长度:”+行长度)
stringBuilder.append(行).append(“\n”)
}
**输出:
二进制/八位字节流
内容长度:25739
<3/4行从此处打印的文件中读取。>
长度:25341**
如何从文件中读取指定数量的字节?如果我在没有指定范围的情况下读取文件,则整行打印时不会出现任何问题 您没有打印收到的全部数据,您只是打印到第一个换行符。
while
循环完成后,stringBuilder
内部的长度是多少?它与第一行长度的值相同。为了测试,我在文件中只放了一行,所以我只打印第一行的长度。我发现还有一件事,长度25738被认为是字节长度(我认为它像一个字符长度)。它返回了这么多的字节。比较char和byte并没有什么意义。我知道。我只是想了解它是如何工作的,并且尝试了很多事情。忽略我之前的评论。