イントロダクション
Java Docの内容を読んで、理解します。今回はBufferedReaderを理解します。
以下のリンク先がJavaDocになります。
JavaDoc~BufferedReader~
BufferedReaderはファイル読み個処理の時によく使用するクラスです。
下のコードは、サンプルコードです。
- responseは取得したデータ(文字列)を返却するための変数
- Files.newBufferedReader()で、このPCの使用する文字エンコードでクラスの生成(インスタンス化)
- whileの条件としてreadLine()で取得した文字列(line)がnullでないならば繰り返す
- SEPは改行コード
StringBuilder response = new StringBuilder();
final String SEP = System.getProperty("line.separator");
try {
BufferedReader read = Files.newBufferedReader(Paths.get("resources/title.txt"), Charset.forName(System.getProperty("file.encoding")));
String line = "";
while((line = read.readLine()) != null) {
response.append(line);
response.append(SEP);
}
} catch(IOException e) {
e.printStackTrace();
}
サンプル動画
読み込み
これは、自分のやり方ですが…
初めに「すべての実装されたインターフェース」を見ます。知っているものがあれば、理解は早いです。メソッドの使い方は全く同じになるので…
次は、クラスの説明部分を読みます。ここまで、上から順に読んでいます。
コンストラクタや、メソッドに関してはナナメ読みして使えそうなものをチョイスします。
Java Docのポイント
結局のところは、使えれば良い(処理の中身は必要に応じて)ので用途を理解できるようになれば、おっけ。
Java Docの理解には、以下の事を分かっておくと楽です。
- 継承関係について
- 対象クラスのベースになるフレームワークの理解、これはリストやマップであれば、コレクションフレームワークになるし、JavaFXであればJavaFXのフレームワークになります。
BufferedReader
BufferedReaderの使用サンプルを下に示します。※上記のサンプルとは別の書き方です。処理内容はほぼ同じ
// リーダー作成 Reader reader = new InputStreamReader(System.in); // コンストラクタ BufferedReader buf = new Bufferedreader(reader);
こんな感じです。ちなみにファイルの読み込みを行うときは
// TODO-[IOExceptionのthrows文、try〜chatchなどを使用します。 FileReader fileRead = new FileReader(new File("./test.txt")); BufferedReader read = new BufferedReader(fileReader); BufferedWriter writer = new BufferedWriter( new FileWriter(new File("./out.txt))); // 読み込む行 String line = null; while((line = read.readLine()) != null) { witer.write(line); } // ファイルを閉じる writer.close();
Readerクラスを継承したクラスがJava Docに記載されているのでどれを選んでもおっけーです。ちなみにBufferedWriterに関しても記載しております。
既知のサブクラスに記載されてます。
関連するインターフェースなど
そして、対象のクラスの継承関係(親子関係)
早い話が、Readerクラスを親に持っていますよ。ということ
BufferedReaderと似たクラスは何かな?と思ったら親クラスのReaderクラスを参照してみれば良い。
以下のようなクラスが兄弟クラスとして見ることができます。
・BufferedReader,
・ CharArrayReader,
・FilterReader,
・InputStreamReader,
・PipedReader,
・StringReader
こんな感じで開拓して行くのも面白いのではないでしょうか?
でわでわ。。。