gpt4 book ai didi

java - 计算出输入流的大小

转载 作者:行者123 更新时间:2023-12-01 09:13:06 25 4
gpt4 key购买 nike

我目前正在使用 Amazon 的 S3 存储获取输入流,如下所示:

public static InputStream getResourceAsStream(String fileKey) {
AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider());
return s3Client.getObject(new GetObjectRequest(bucketName, fileKey)).getObjectContent();
}

我正在处理的文件是 .mp4 视频。我尝试使用范围请求流式传输视频,以便最终用户快速前进和后退。当我使用常规 File 对象时,我的流传输工作正常,但现在我从 Amazon S3 接收流,而不是使用本地计算机上保存的文件。

如何计算出该流的长度?之前,我这样做过:

Long length = Files.size(filepath); 

但是现在这不起作用,因为我没有直接在运行 Java 代码的机器上保存文件。有什么方法可以计算出InputStream的长度吗?

最佳答案

除非您从头到尾读取 InputStream 并计算您自己读取的字节数,否则无法获取 InputStream 的长度。

您可以获得 S3Object 的长度不过:

public static InputStream getResourceAsStream(String fileKey) {
AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider());
S3Object obj = s3Client.getObject(new GetObjectRequest(bucketName, fileKey));
long length = obj.getObjectMetadata().getInstanceLength();
//use length
return obj.getObjectContent();
}

关于java - 计算出输入流的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40792528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com