「こんにちは、アミーゴ、もう一度。」
「こんにちは、リシ。今日のレッスンは何についてですか?」
今日はリーダーとライターについてお話します。
「しかし、リシ、私はすでに彼らについてほとんどすべてを知っています!」
「繰り返しは学習の母です。」
「うーん。まあ、分かった」
" ReaderおよびWriter は、 InputStreamおよびOutputStreamに似ていますが、バイトではなく文字を処理します。 バイト ストリームと呼ばれるInputStream および OutputStream とは対照的に、 これらは文字ストリームと呼ばれることもあります。"
「1 つは文字用、もう 1 つはバイト用です。覚えています。」
「それだけではありません。これらのクラスは、テキストと文字列を処理するように特別に設計されています。今日は、これらの抽象クラスの 2 つの古典的な実装であるFileReaderとFileWriterを見ていきます。」
「 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());
「うーん。それは短いですね。そして今日、あなたはこれらすべての方法について私に教えてくれました。私はそれをやり直します。レッスンをありがとう、リシ。」
「頑張れ、アミーゴ」
GO TO FULL VERSION