1

CopyBytes通常のプログラムのように見えますが、実際には避けるべき低レベルのI/Oの一種を表しています。キャラクター、オブジェクトなどのストリームがあり、それらはすべてそれ自体で構築されていますが、優先されるべきであると言われていbytestreamます。この背後にある理由は何ですか、それはセキュリティマネージャとパフォーマンス関連の問題と関係がありますか?

ソース:oracle docs

4

3 に答える 3

4

オラクルが実際に言っているのは、「ホイールを再実装しないでください!」です。

通常のバイトストリームはほとんど必要ありません。

  • テキストを解析していますか?テキストエンコーディングの問題を理解する文字ストリームを使用します。
  • XMLを解析していますか?SAXまたはその他のライブラリを使用してください。
  • 画像を解析していますか?ImageIOクラスを使用します。
  • AからBにコピーしていますか?apachecommons-ioFileUtilsを使用します。

実際にバイトストリームを使用する必要がある状況はほとんどありません。

于 2012-07-06T08:34:53.423 に答える
3

あなたが引用したテキストから:

CopyBytesは通常のプログラムのように見えますが、実際には避けるべき低レベルのI/Oの一種を表しています。xanadu.txtには文字データが含まれているため、次のセクションで説明するように、文字ストリームを使用するのが最善の方法です。より複雑なデータ型のストリームもあります。バイトストリームは、最も基本的なI/Oにのみ使用する必要があります。

通常、バイトを直接操作する必要はありません。たとえば、テキスト(つまり、バイトからデコードする必要のある文字データ)を読み取るための高レベルのAPIがあります。

于 2012-07-06T08:35:50.437 に答える
2

動作しますが、非常に非効率的です。コピーする1バイトごとに2つのメソッド呼び出しが必要です。

代わりに、バッファー(数千バイト、最適なサイズは正確に読み取る内容やその他の条件によって異なります)を使用し、メソッド呼び出しごとにバッファー全体(または可能な限り)を読み取り/書き込みする必要があります。

于 2012-07-06T08:33:31.527 に答える