2

Java コードからcsvファイルを読み込もうとしています。次のコードを使用します。

public void readFile() throws IOException {
    BufferedReader br = new BufferedReader(new FileReader(fileName));
    lines = new ArrayList<String>();
    String newLine;
    while ((newLine = br.readLine()) != null) {
        newLine = br.readLine();
        System.out.println(newLine);
        lines.add(newLine);
    }
    br.close();
}

上記のコードから得られる出力は、すべての代替行 [2、4、6 行目] がreadLine()メソッドによって読み取られて返されることです。この動作が存在する理由はわかりません。csv ファイルの読み取り中に何か不足している場合は、修正してください。

4

3 に答える 3

7

ループで処理せずに最初に行を読み取っているときはwhile、もう一度読み取っていますが、今回は処理しています。readLine()メソッドは行を読み取り、リーダー ポインターをファイル内の次の行に移動します。したがって、このメソッドを使用するたびに、ポインターは次の行を指すように 1 つインクリメントされます。

これ:

 while ((newLine = br.readLine()) != null) {
        newLine = br.readLine();
        System.out.println(newLine);
        lines.add(newLine);
    }

これに変更する必要があります:

 while ((newLine = br.readLine()) != null) {
        System.out.println(newLine);
        lines.add(newLine);
    }

したがって、別の行を読み取ってから処理することなく、行を読み取って処理します。

于 2012-08-16T15:11:46.810 に答える
1

ループ本体の最初の行を削除する必要があります newLine = br.readLine();

于 2012-08-16T15:10:09.067 に答える