記事ディレクトリ
バイト ストリームを使用してテキスト ファイルをコピーすることもできますが、system.out() などのようにメモリ内で読み出すことはできません。
FileReaderのデータ読み込みの基本操作
IO ストリームの操作は 4 つのステップに要約できます。
- Java はオブジェクト指向であるため、ファイルを読み取りたい場合は、まずファイルを表すオブジェクトを用意する必要があるため、次のようになります。
File file = new File("hello.text");
- ファイルの読み取りと書き込みはストリーム操作であるため、ストリームのインスタンス化も必要です:
FileReader fr = new FileReader(file);
ここでは、テキスト ファイルを操作するため、ファイルの内容が文字を通じてメモリに読み込まれるため、FileReader ストリームが使用されます。他のコンテンツを別の方法で操作するには、フローを変更する必要があります - ファイルに対する操作の実行: 読み取り/書き込み
- リソースを閉じます。つまり、IO ストリームを閉じます。
メイン メソッドの new File() のアドレスはこのプロジェクトと比較され、これはこのプロジェクト上にあることと同等であり、メイン メソッドの new File() のアドレスは比較されます。テスト ケースは、このモジュールの
最適化
。前に作成したコードは例外をスローすることで例外を処理しますが、new FileReader(file) が実行されて IO ストリームを開き、その後 fr.read() で例外が発生すると、例外が発生します。スローされるため、fr.close() が実行されず、IO ストリームも閉じられません。リソースの無駄とメモリ リークの問題があります。したがって、例外を確実に
キャッチするには try...catch...finally を使用する必要があります。どこで例外が発生しても、IO ストリームは閉じられる
FileReader での Reader() の使用
ファイルの終わりに達した場合は、-1 が返されます。Reader(char[] cbuf): ファイル内のコンテンツをロードするために cbuf を使用するリーダーと同等です。ファイル内のコンテンツが cbuf の長さより大きい場合、cbuf 文字を読み取ることができます。それ以外の場合、読み取られるファイルのコンテンツは次のようになります。 cbuf の長さよりも短い cbuf 配列には回復されていないデータが存在し、これが誤った書き込みの原因となります。例: hello.txt ファイルの内容が helloworld123 の場合、最初に読み取られたときは hello、2 回目は world、3 回目は 123ld であるため、次のように判断されます。読み取られるたびに何文字ありますか? cbuf 配列の長さの代わりに、reader(char[] cbuf) の戻り値を使用します。
データを書き出す FileWrite 操作
FileInputStream と FileOutputStream を使用して画像を操作する
バッファリングされたストリーム(バイト型)は、非テキストファイルのコピーを実装します。
バッファストリーム: ファイルの読み書き効率を向上させるために、内部バッファ領域を提供するため、読み書き効率を向上させることができます。読み取りの際、最初にファイルをバッファに読み込みます。バッファがいっぱいになると、再度書き出すと、バッファのデフォルト サイズは 8 バイトです。bufferOutputStreamには、バッファをリフレッシュするためのflush()メソッドがあります。つまり、バッファ内のデータの読み書きとその後のクリアを行います。
一般に、バッファリングされたストリームは開発に使用されます。
内部の流れの閉鎖を省略可能