JavaIO 3—いくつかの基本的なストリームクラスの紹介(上)

2338 ワード

今回紹介するのは、4対の入出力ストリームクラス、FileOutputStreamとFileInputStream、BufferedOutputStreamとBufferedInputStream、DataOutputStreamとDataInputStream、PipedOutputStreamとPipedInputStreamです.ここでは4つのグループだけを紹介しますが、前の文章の継承階層にはいくつかのクラスがあり、読者はJavaのヘルプドキュメントに基づいて学ぶことができます.
上述した4組の出力入力ストリームクラスはいずれも対応するバイトストリームであり,伝達されるのはすべてバイトである.
1 FileOutputStreamとFileInputStream
FileOutputStreamファイル出力ストリームは、FileまたはFileDescriptorにデータを書き込むための出力ストリームである.作成にはFileオブジェクトまたはFileDescriptorが必要です(もちろん他の構成方法もありますが、一つ一つ羅列することはできません).writeメソッドを呼び出して、1バイト配列をパラメータとしてストリームに書き込むことができます.私たちが渡したバイト配列は、書き込みバイトのサイズを指定することもできます.FileInputStreamは、ファイルシステム内のファイルから入力バイトを取得する.作成するには、FileオブジェクトまたはFileDescriptorオブジェクトが必要です.readメソッドを使用して、作成したバイト配列にデータを読み込むことができます.
この2つのストリームクラスは、使用が完了したら、このストリームを閉じることを覚えています.次に例を示します.
この2つのクラスが転送されるバイトストリームについては、私たちのCディスクの下で見ることができ、1.txtファイルを生成し、私たちが入力した値を開くことができます.
このようなハードディスク(HDD)の読み書きは、データがあるたびに書き込み、読み取るたびにハードディスク(HDD)を読み取るものです.もちろん、ハードディスクへのアクセス速度が遅いことは知っていますが、頻繁にハードディスクにアクセスすると、プログラムの実行速度に影響を与えるに違いありません.Javaでは、バッファ付きの読み書きをより効率的に提供しています.これは私たちが書いた2組目のクラスを紹介する必要があります.
2 BufferedOutputStreamとBufferedInputStream
バッファ付きの読み書きは、ファイルを書くときにデータをバッファに書き込み、バッファがいっぱいになったとき、またはバッファを人為的にリフレッシュしてから、外部メモリ書き込みハードディスクにアクセスします.もちろん、私たちが読むときもこの原理に従っています.そうすれば、ハードディスクにアクセスする回数が少なくなり、読み書きの速度が向上します.データ量が大きいとき、これは効率的です.
BufferedOutputStream:このクラスはバッファの出力ストリームを実現します.このような出力ストリームを設定することで、アプリケーションは、各バイトを最下位の出力ストリームに書き込むことができ、各バイトの書き込みに対して最下位のシステムを呼び出す必要はありません.
BufferedInputStream:BufferedInputStreamおよびmarkメソッドをサポートするバッファ入力の機能と、別の入力ストリームにいくつかの機能を追加します.resetを作成すると、内部バッファ配列が作成されます.ストリーム内のバイトを読み出したりスキップしたりする場合は、必要に応じて含まれる入力ストリームから内部バッファを再充填し、複数のバイトを一度に充填することができます.BufferedInputStreamは、入力ストリームのある点を記録するように動作し、markは、含まれる入力ストリームから新しいバイトを取得する前に、最後のresetの動作後に読み取られたすべてのバイトを再び読み出すように動作する.
どちらのクラスも、対応するバイトストリームOutputStreamまたはInputStreamクラスのオブジェクトを作成する必要があります.
次に、例のプログラムを見てみましょう.
このプログラムについていくつかの点を説明します.9行と10行を削除すると、私たちが見たファイルはファイルに書き込まれません.バッファが満員でもリフレッシュされていないので、書き込まれません.9行または10行のコードを加えた行はいずれも書き込まれ、出力ストリームを閉じるか、人為的にリフレッシュするときにデータが書き込まれます.ここでは,それぞれFileOutputStreamオブジェクトfosをパラメータとしてBufferedOutputStreamオブジェクトbosを作成し,FileInputStreamオブジェクトfisをパラメータとしてBufferInputStreamオブジェクトbisを作成した.
どこか書き間違えたら、読者に指摘してください.