サーチ…


前書き

リーダとライタとそれらのそれぞれのサブクラスは、テキスト/文字ベースのデータに対する単純なI / Oを提供します。

BufferedReader

前書き

BufferedReaderクラスは、主に次の2つの目的に使用される他のReaderクラスのラッパーです。

  1. BufferedReaderは、ラップされたReaderバッファリングを提供します。これにより、アプリケーションは過度のI / Oオーバーヘッドを発生させることなく、一度に1つの文字を読み取ることができます。

  2. 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適用できます

ノート:

  1. Java 7(またはそれ以降)のtry-with-resourcesを使用して、基礎となるリーダーが常に閉じられていることを確認しました。これにより、潜在的なリソースリークが回避されます。以前のバージョンのJavaでは、 finallyブロック内のBufferedReaderを明示的に閉じます。

  2. 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の簡単な例を知るのに役立ちます。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow