Java Language
読者と作家
サーチ…
前書き
リーダとライタとそれらのそれぞれのサブクラスは、テキスト/文字ベースのデータに対する単純なI / Oを提供します。
BufferedReader
前書き
BufferedReader
クラスは、主に次の2つの目的に使用される他のReader
クラスのラッパーです。
BufferedReader
は、ラップされたReader
バッファリングを提供します。これにより、アプリケーションは過度のI / Oオーバーヘッドを発生させることなく、一度に1つの文字を読み取ることができます。BufferedReader
は、一度に1行のテキストを読み込む機能を提供します。
BufferedReaderを使用するための基本
BufferedReader
を使用するための通常のパターンは次のとおりです。まず、文字を読みたいReader
を取得します。次に、 Reader
をラップするBufferedReader
をインスタンス化します。次に、文字データを読み込みます。最後に、ラップされた `Readerを閉じるBufferedReader
を閉じます。例えば:
File someFile = new File(...);
int aCount = 0;
try (FileReader fr = new FileReader(someFile);
BufferedReader br = new BufferedReader(fr)) {
// Count the number of 'a' characters.
int ch;
while ((ch = br.read()) != -1) {
if (ch == 'a') {
aCount++;
}
}
System.out.println("There are " + aCount + " 'a' characters in " + someFile);
}
このパターンは任意のReader
適用できます
ノート:
Java 7(またはそれ以降)のtry-with-resourcesを使用して、基礎となるリーダーが常に閉じられていることを確認しました。これにより、潜在的なリソースリークが回避されます。以前のバージョンのJavaでは、
finally
ブロック内のBufferedReader
を明示的に閉じます。try
ブロック内のコードは、FileReader
から直接読み取った場合に使用するコードと事実上同じです。実際、BufferedReader
は、ラップするReader
とまったく同じように機能します。違いは、 このバージョンはずっと効率的だということです。
BufferedReaderバッファサイズ
BufferedReader.readLine()メソッド
例:ファイルのすべての行をリストに読み込む
これは、ファイル内の各行を取得し、 List<String>
追加することによって行われます。リストが返されます:
public List<String> getAllLines(String filename) throws IOException {
List<String> lines = new ArrayList<String>();
try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
String line = null;
while ((line = reader.readLine) != null) {
lines.add(line);
}
}
return lines;
}
Java 8では、 lines()
メソッドを使用してこれを行うためのより簡潔な方法が提供されています。
public List<String> getAllLines(String filename) throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
return br.lines().collect(Collectors.toList());
}
return Collections.empty();
}
StringWriterの例
Java StringWriterクラスは、文字列を作成するために使用できる文字列バッファからの出力を収集する文字ストリームです。
StringWriterクラスは、Writerクラスを拡張します。
StringWriterクラスでは、ネットワークソケットやファイルなどのシステムリソースは使用されないため、StringWriterを閉じる必要はありません。
import java.io.*;
public class StringWriterDemo {
public static void main(String[] args) throws IOException {
char[] ary = new char[1024];
StringWriter writer = new StringWriter();
FileInputStream input = null;
BufferedReader buffer = null;
input = new FileInputStream("c://stringwriter.txt");
buffer = new BufferedReader(new InputStreamReader(input, "UTF-8"));
int x;
while ((x = buffer.read(ary)) != -1) {
writer.write(ary, 0, x);
}
System.out.println(writer.toString());
writer.close();
buffer.close();
}
}
上記の例は、BufferedReaderを使用してストリームからファイルデータを読み込むStringWriterの簡単な例を知るのに役立ちます。