CopyBytes
通常のプログラムのように見えますが、実際には避けるべき低レベルのI/Oの一種を表しています。キャラクター、オブジェクトなどのストリームがあり、それらはすべてそれ自体で構築されていますが、優先されるべきであると言われていbytestream
ます。この背後にある理由は何ですか、それはセキュリティマネージャとパフォーマンス関連の問題と関係がありますか?
ソース:oracle docs
CopyBytes
通常のプログラムのように見えますが、実際には避けるべき低レベルのI/Oの一種を表しています。キャラクター、オブジェクトなどのストリームがあり、それらはすべてそれ自体で構築されていますが、優先されるべきであると言われていbytestream
ます。この背後にある理由は何ですか、それはセキュリティマネージャとパフォーマンス関連の問題と関係がありますか?
ソース:oracle docs
オラクルが実際に言っているのは、「ホイールを再実装しないでください!」です。
通常のバイトストリームはほとんど必要ありません。
実際にバイトストリームを使用する必要がある状況はほとんどありません。
あなたが引用したテキストから:
CopyBytesは通常のプログラムのように見えますが、実際には避けるべき低レベルのI/Oの一種を表しています。xanadu.txtには文字データが含まれているため、次のセクションで説明するように、文字ストリームを使用するのが最善の方法です。より複雑なデータ型のストリームもあります。バイトストリームは、最も基本的なI/Oにのみ使用する必要があります。
通常、バイトを直接操作する必要はありません。たとえば、テキスト(つまり、バイトからデコードする必要のある文字データ)を読み取るための高レベルのAPIがあります。
動作しますが、非常に非効率的です。コピーする1バイトごとに2つのメソッド呼び出しが必要です。
代わりに、バッファー(数千バイト、最適なサイズは正確に読み取る内容やその他の条件によって異なります)を使用し、メソッド呼び出しごとにバッファー全体(または可能な限り)を読み取り/書き込みする必要があります。