再利用に関する投稿が多数あることがわかりますInputStream。InputStreamこれは 1 回限りのものであり、再利用できないことを理解しています。
ただし、次のようなユースケースがあります。
を使用してDropBoxを取得して、からファイルをダウンロードしました。次に、 を渡して、ファイルを別のシステムにアップロードする必要があります。ただし、ダウンロードの一部として、ファイルの を提供する必要があります。そのため、ファイルをアップロードする前に、ストリームからファイルを読み取る必要があります。受け取った は 1 回しか使用できないため、を計算してからファイルをアップロードする前に、別のファイルを取得する必要があります。手順は次のようになります。DropBoxInputStreamDropBox's Java SDKInputStreamMD5DropBoxInputStreamDropBoxInputStreamMD5
- 最初の 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、ディスクのメモリまたはメモリにファイルをキャッシュする必要なく、ファイルを直接取得できると思います。それはうまくいきますか?