Java 文字コードを指定して、テキストファイルの入出力を行う




ログを出力したり、CSVファイルを読んだり書いたり、テキストファイルの入出力はよく使います。
ここでは、単純にテキストファイルから読み込み、テキストファイルへの書き込みをしてみたいと思います。

文字コードを指定してテキストファイルを書いて、書いたテキストファイルをすぐ読み込んでみる

UTF-8で読み書きするサンプルです。
ここでは、とりあえずファイルに書き込み。書き込んだファイルを読み込んで、標準出力してみます。

実行結果

ちなみに、上記サンプルを実行すると、テキストファイルが「C:\test\test.txt」に作成されます。

ファイル名の指定は?

読み込み時は、FileInputStreamにて指定。書き込み時は、FileOutputStreamの各コンストラクタで指定します。
ファイルを格納するパスは、絶対パス、相対パスどちらで指定しても構いません。

文字コードの指定

読み込み時は、InputStreamReaderにて指定。書き込み時は、OutputStreamWriterの各コンストラクタで指定します。
上記の場合、「UTF-8」を指定していますが、他に「SJIS」等を指定しても構いません。

flushとcloseを忘れずに!

ファイルから読み込む場合、読み込んだ後(≒最後)にcloseを忘れず実施してください。
ファイルへ書き込みする場合、書き込んだ後(≒最後)にflushとcloseを忘れず実施してください。

flushってなに?

ざっくり言うと、「全部ファイルに書き出して!」という命令です。
プログラムで言われるままにファイルへ書き込みしていると、ファイルI/Oが増えてしまうので、ある程度溜まるまで書き込まないのです。
つまり、これを忘れると、全然書かれていなかったり、中途半端に書かれたりします。

closeってなに?

ざっくり言うと、「ファイルの操作が終わったから、もう触らないよ!」を宣言する命令です。
これにより、実行しているプログラム(プロセス)からファイルが解放されて、他のプログラムが書き込んだりすることができるようになります。
つまり、これを忘れると、いつまで経っても、他のプログラムが触れません。
※実際は、windowsを再起動したり、プログラムが終了したりしたときに解放される(されてしまう)のですが、サーバーで動くプログラムではきっと困ります(;´Д`)
ちゃんとcloseしてあげましょう。