阿神2017-04-17 16:45:03
すべての IO 操作はバイトを通じて行われます。Java では、システムの下部には文字の概念がありません。InputStream と OutputStream にはバイト操作メソッドのみがあり、文字列メソッドはありません。文字列の読み書きができるストリームのカプセル化されたオブジェクトはすべて上位層に実装されており、使いやすいです。
使用するストリームの具体的な選択とそれらの間の効率はすべて、特定のシナリオと関数の目的によって異なります。単純な善し悪しはありません。
上記の 2 つの例では、BufferedWriter と BufferedReader の内部実装、または Buffer バッファリングのバイト実装を使用することを選択することを除いて、効果はまったく同じです。
Java はオープンソースです。ソース コードをもっと読み、内部の原則と実装をよく理解することをお勧めします。
天蓬老师2017-04-17 16:45:03
この 2 つの違いは、バイト ストリームはテキスト ファイルと一部のバイナリ データ (写真、ビデオ、オブジェクト) などの非テキスト ファイルの両方を操作できるのに対し、文字ストリームはテキストのみを操作できることです。これは両方に当てはまります。読み取りと書き込みに使用するデータ ストリームを決定する方法は、読み書きするデータの種類によって異なります。テキスト ファイルの場合は、当然、文字ストリームを選択します。文字ストリームは一度に 2 バイトの Unicode 文字を処理し、非テキスト ファイルの場合はバイト ストリームのみを使用できることは誰もが知っています。誰がより効率的かを単純に見ることはできません。これが 2 つのデータ ストリームがある理由だと思います。
迷茫2017-04-17 16:45:03
小さなファイルの読み取りと書き込みにはほとんど違いはありません。
大きなファイルの読み取りと書き込みには、バッファーの方が適しています。ハードディスクへの複数の読み取りと書き込みの場合、優れたキャッシュ メカニズムを使用すると高速になります。たとえば、60 GB のファイルの場合、バッチで (または別々の行で) 複数回読み書きする必要があります。
次に、文字またはバイトを処理しますか? 必要に応じて選択します。