Androidのアプリ開発関連のブログ

BufferedReaderの末尾改行

JavaのBufferedReaderでreadLine()で1行ずつ読み込むと、
readLine()で取得した行文字列には行末の改行コードが含まれないので、
while((line=buf.readLine())!=null){
   line+=lf;
   writer.write(line,0,line.length());
}
こんな感じで書き込み処理作ると元文字列に末尾に改行が無くても改行が追加されちゃう。

どうにかならんかと考えて、
改行コードの次の行ではnullではなくて空文字になる?
と思って、
if((line=buf.readLine())!=null){
  writer.write(line,0,line.length());
  while((line=buf.readLine())!=null){
    line=lf+line;
    writer.write(line,0,line.length());
  }
}
こんな感じでやってみたが、ダメだった。
これだとキッチリ改行の手前で終わっちゃうみたい。
よく考えると、空のStringだと0byteになるんだからそうだよな。

readLine()使う以上、BufferedReader通す前にサイズチェックしない限りどうにもならんかね。

元文字列の末尾が改行か他の文字かで処理分けるのもありかと思ったが、
書き込み処理はそれで良さそうだが、読み込み処理でもBufferedReader.readLine()使いたいから、その時は2回読まないと判別でき無いから、それなら1文字ずつ読んだ方が良いな・・・


そこまでして末尾の改行にこだわりたくないw