再利用に関する投稿が多数あることがわかりますInputStream
。InputStream
これは 1 回限りのものであり、再利用できないことを理解しています。
ただし、次のようなユースケースがあります。
を使用してDropBox
を取得して、からファイルをダウンロードしました。次に、 を渡して、ファイルを別のシステムにアップロードする必要があります。ただし、ダウンロードの一部として、ファイルの を提供する必要があります。そのため、ファイルをアップロードする前に、ストリームからファイルを読み取る必要があります。受け取った は 1 回しか使用できないため、を計算してからファイルをアップロードする前に、別のファイルを取得する必要があります。手順は次のようになります。DropBoxInputStream
DropBox's Java SDK
InputStream
MD5
DropBoxInputStream
DropBoxInputStream
MD5
- 最初の DropBoxInputStream を取得する
- DropBoxInputStream から読み取り、MD5 を計算します
- 2 番目の DropBoxInputStream を取得する
- MD5 と 2 番目の DropBoxInputStream を使用してファイルをアップロードします。
InputStream
計算する前に「キャッシュ」または「バックアップ」する方法がたくさんある場合、同じものを再度MD5
取得するステップ3を節約できると思いますか?DropBoxInputStream
どうもありがとう
編集:
申し訳ありませんが、いくつかの情報を見逃していました。
私が現在行っていることは、 a を使用してMD5DigestOutputStream
を計算することMD5
です。でデータをストリーミング MD5DigestOutputStream
し、一時ファイルとしてローカルに保存します。データが を通過するMD5DigestOutputStream
と、 が計算されMD5
ます。
次に、サードパーティのライブラリを呼び出して、計算された md5 とFileInputStream
一時ファイルから読み取る a を使用してファイルをアップロードします。
ただし、これには巨大なディスク容量が必要になる場合があり、一時ファイルを使用する必要をなくしたいと考えています。MD5
私が使用するライブラリは aとのみを受け入れますInputStream
。これはMD5
、自分の側で を計算する必要があることを意味します。私の計画は、 my を使用して (ファイルを保持せずに)MD5DigestOutputStream
データを書き込ん/dev/null
で、 を計算しMD5
、DropBox から を再度取得して、InputStream
使用するライブラリに渡すことです。ライブラリはDropBox
、ディスクのメモリまたはメモリにファイルをキャッシュする必要なく、ファイルを直接取得できると思います。それはうまくいきますか?