0

自分のアプリケーション モジュールで InputStream/OutputStream オブジェクトを渡していることに気付きました。


コンテンツをディスクに保存し 、さまざまなメソッド呼び出し間でリソースのようなものを渡す方が良いかどうか疑問に思っています。毎回ストリームを処理する代わりに
、バイト [] 配列を使用します。

これらの状況でのあなたのアプローチは何ですか?
ありがとう

編集:
ユーザーがアップロードしたファイルを受け取るコントローラーがあります。ファイルをレンダリングする機能を提供するユーティリティ モジュールがあります。

utilityMethod(InputStream is, OutputStream os)

InputStream 内のファイルは、ユーザーによってアップロードされたものです。os は、応答に関連付けられたストリームです。生成されたファイルを .tmp ファイルに保存してファイル パスを返すユーティリティ メソッドを使用するか、byte[] などを使用して、コントローラーで outputStream を直接処理する方がよいかどうか疑問に思っています。

4

2 に答える 2

1

私は可能な限り RAM に保存するようにしています (主にパフォーマンス上の理由と RAM が安価なためです)。だから私はFileBackedBuffer未知のサイズのデータ​​を「保存」するために使用しています。限界があります。書き込まれるバイトがバイト未満の場合limit、それらは内部バッファーに保持されます。さらにデータが書き込まれたら、実際のファイルを作成します。このクラスには、そこからInputStreamおよびを取得するメソッドがOutputStreamあるため、使用するコードはささいな詳細に悩まされることはありません。

于 2009-11-16T15:16:55.427 に答える
0

答えは、実際には問題の状況によって異なりますが、それは私たちにはわかりません。

したがって、最も一般的なケースを想像して、2 つの抽象化を作成します。最初の抽象化はInputStream/OutputStreamパラメーターとして受け取りますが、もうbyte[]. 1 つは受け取ります。ストリームを受け取るものは、データを読み取って byte[] 実装に渡すことができます。したがって、ユーザーは、ニーズ/快適さに基づいて、ストリーム抽象化と byte[] 抽象化の両方を使用できます。

于 2009-11-16T15:16:44.410 に答える