0
我使用Amazon的S3存儲像下面當前獲得的輸入流:搞清楚大小的InputStream
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'是字節流,就知道大小的唯一方法是閱讀,直到返回沒有更多的字節。 – Kayaman
@Kayaman所以我應該讀'InputStream'並將字節存儲在一個字節數組中,直到不再有字節返回,然後檢查字節數組的大小? –
通常不會。這會浪費大量的內存,所以通常你需要圍繞它進行設計。 – Kayaman