簡體   English   中英

獲得出版商<ByteBuffer>來自輸入流

[英]Get an Publisher<ByteBuffer> from InputStream

我剛剛升級了我的 mongo-db-java-driver,現在方便的函數GridFSBucket.uploadFromStream已經消失了。 因此我們現在得到了一個

GridFSUploadPublisher<ObjectId> uploadFromPublisher(String filename, Publisher<ByteBuffer> source);

任何想法如何將我的 InputStream 轉換為Publisher<ByteBuffer> java驅動程序或Reactor中是否有任何實用程序?

spring 框架中有一個實用程序可以將輸入流轉換為數據緩沖區通量。 並且直接將數據緩沖區映射為字節緩沖區。

Flux<ByteBuffer> byteBufferFlux = DataBufferUtils.readByteChannel(() -> Channels.newChannel(inputStream), DefaultDataBufferFactory.sharedInstance, 4096).map(DataBuffer::asByteBuffer);

為了讓它工作,可以讀取流並將數據存儲在byte[]數組中,稍后可以用ByteBuffer.wrap(byte[])方法包裝。 我查看了較舊的 MongoDB 驅動程序的源代碼,發現流被用作實際流,因此當時它並沒有在幕后偷偷地轉換為 ByteBuffer。

似乎沒有方法可以在數據到來時流式傳輸數據,現在除了將文件加載到內存中別無他法。 我可以看到它在許多情況下如何成為問題,但也許我只是無法理解這種方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM