めあとるーむ記録帳

なんか書く

Javaのファイル読み込みでテキストを扱うときはchar型を使わない方がいい

ファイル読み込みでテキストファイルを扱うときはこんなコードを書く

    String fileText;
    try{
        BufferedReader br = new BufferedReader(
            new InputStreamReader(
                new FileInputStream("FileName"), "UTF-8"
            )
        );
        StringBuilder sb = new StringBuilder();

        String line;
        while((line = br.readLine()) != null){
            sb.append(line);
        }
        br.close();
        fileText = sb.toString();
    }catch(FileNotFoundException e){
        e.printStackTrace();
    }catch(IOException e){
        e.printStackTrace();
    }

そして一部をこうも書ける

        int ch;
        while((ch = br.read()) != -1){
            sb.append((char)line);
        }
        br.close();

違いは1行ずつ読み取るか、一文字ずつ読み取るかの違い。

でもこうすると内部に改行が含まれている場合、うまく扱えないケースがある。一応Characterクラスには\nが定義されてるが、改行直後の文字の扱いがおかしくなってしまい、改行ごとにパースした後に表示されない文字が残ってしまうようだった。

詳細は調べたら追記するかもしれないが、改行をもとに分けるようなコードだったら注意する必要があるみたい。