「こんにちは、アミーゴ、もう一度。」

「こんにちは、リシ。今日のレッスンは何についてですか?」

今日はリーダーとライターについてお話します。

「しかし、リシ、私はすでに彼らについてほとんどすべてを知っています!」

「繰り返しは学習の母です。」

「うーん。まあ、分かった」

" ReaderおよびWriter は、 InputStreamおよびOutputStreamに似ていますが、バイトではなく文字を処理します。 バイト ストリームと呼ばれるInputStream および OutputStream とは対照的に、 これらは文字ストリームと呼ばれることもあります。"

「1 つは文字用、もう 1 つはバイト用です。覚えています。」

「それだけではありません。これらのクラスは、テキストと文字列を処理するように特別に設計されています。今日は、これらの抽象クラスの 2 つの古典的な実装であるFileReaderFileWriterを見ていきます。」

「 FileReaderクラスのメソッドは次のとおりです。」

方法 説明
int read() ストリームから 1 文字を読み取り、それを返します。
int read(char cbuf[], int offset, int length) 文字の配列を読み取り、読み取った文字数を返します。
boolean ready() ストリームからの読み取りが可能な場合は true を返します。
void close() 入力ストリームを閉じます。
int read(java.nio.CharBuffer target) 一連の文字をバッファに読み取ります。
int read(char cbuf[]) 文字の配列を読み取ります。
long skip(long n) ストリーム内の n 文字をスキップします。
String getEncoding() ストリームの現在のエンコーディングを返します。

「まあ、これについてはほぼすべて知っています。でも、FileWriter についてはどうですか?」

方法 説明
void write(int c) ストリームに 1 文字を書き込みます。
void write(char cbuf[], int off, int len) 文字の配列をストリームに書き込みます。
void write(char cbuf[]) 文字の配列をストリームに書き込みます。
void write(String str, int off, int len) 文字列の一部をストリームに書き込みます。
void write(String str) 文字列をストリームに書き込みます。
void flush() メモリにキャッシュされているすべてをディスクに書き込みます。
void close() ストリームを閉じます。
String getEncoding() ストリームの現在のエンコーディングを返します。

"そんなこと知ってる!"

「それは素晴らしいですね。それでは、興味深い例を 1 つ見てみましょう。後でディエゴがさらにタスクを与えるでしょう。」

「ファイルを 1 行ずつ読むにはどうすればよいですか? コードは書けますか?」

「簡単だよ、見てください。」

コード
// Create a list for storing the lines
List<String> list = new ArrayList<String>();

// Open the file
File file = new File("c:/document.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));

// As long as the file isn't empty, read from it
while (reader.ready())
{
 list.add(reader.readLine());
}

// Close the file
reader.close();

「うーん。悪くないよ」

「悪くないですか? どれもシンプルで美しいです。認めてください、リシ、私はすでに I/O スレッドについて優れた知識を持っています。では、ここで何が改善できるでしょうか?」

「そうですね、たとえば、次のようにすることができます。」

リシの暗号
File file = new File("c:/document.txt");

List list = Files.readAllLines(file.toPath(), Charset.defaultCharset());

「うーん。それは短いですね。そして今日、あなたはこれらすべての方法について私に教えてくれました。私はそれをやり直します。レッスンをありがとう、リシ。」

「頑張れ、アミーゴ」