ログを出力したり、CSVファイルを読んだり書いたり、テキストファイルの入出力はよく使います。
 ここでは、単純にテキストファイルから読み込み、テキストファイルへの書き込みをしてみたいと思います。
文字コードを指定してテキストファイルを書いて、書いたテキストファイルをすぐ読み込んでみる
UTF-8で読み書きするサンプルです。
 ここでは、とりあえずファイルに書き込み。書き込んだファイルを読み込んで、標準出力してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76  | import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; public class TextFileIOTest {     public static void main(String[] args) {         String fileName = "C:\\test\\test.txt";         String charset = "UTF-8";         TextFileIOTest test = new TextFileIOTest();         test.write(fileName,charset);         test.read(fileName,charset);     }     public void write(String fileName,String charset) {         FileOutputStream fos = null;         OutputStreamWriter osw = null;         BufferedWriter bw = null;         try {             fos = new FileOutputStream(fileName);             osw = new OutputStreamWriter(fos,charset);             bw = new BufferedWriter(osw);             for(int i=1 ; i<=10 ; i++) {                 bw.write(i + "行目をかきかき...");                 bw.newLine();             }         } catch (FileNotFoundException e) {             e.printStackTrace();         } catch (UnsupportedEncodingException e) {             e.printStackTrace();         } catch (IOException e) {             e.printStackTrace();         }finally {             try {                 bw.flush();             } catch (IOException e) {             }             try {                 bw.close();             } catch (IOException e) {             }         }     }     public void read(String fileName,String charset) {         FileInputStream fis = null;         InputStreamReader isr = null;         BufferedReader br = null;         try {             fis = new FileInputStream(fileName);             isr = new InputStreamReader(fis,charset);             br = new BufferedReader(isr);             String str = null;             while((str = br.readLine()) != null) {                 System.out.println(str);             }         } catch (FileNotFoundException e) {             e.printStackTrace();         } catch (IOException e) {             e.printStackTrace();         }finally {             try {                 br.close();             } catch (IOException e) {             }         }     } }  | 
実行結果
1 2 3 4 5 6 7 8 9 10  | 1行目をかきかき... 2行目をかきかき... 3行目をかきかき... 4行目をかきかき... 5行目をかきかき... 6行目をかきかき... 7行目をかきかき... 8行目をかきかき... 9行目をかきかき... 10行目をかきかき...  | 
ちなみに、上記サンプルを実行すると、テキストファイルが「C:\test\test.txt」に作成されます。
ファイル名の指定は?
読み込み時は、FileInputStreamにて指定。書き込み時は、FileOutputStreamの各コンストラクタで指定します。
 ファイルを格納するパスは、絶対パス、相対パスどちらで指定しても構いません。
文字コードの指定
読み込み時は、InputStreamReaderにて指定。書き込み時は、OutputStreamWriterの各コンストラクタで指定します。
 上記の場合、「UTF-8」を指定していますが、他に「SJIS」等を指定しても構いません。
flushとcloseを忘れずに!
ファイルから読み込む場合、読み込んだ後(≒最後)にcloseを忘れず実施してください。
 ファイルへ書き込みする場合、書き込んだ後(≒最後)にflushとcloseを忘れず実施してください。
flushってなに?
ざっくり言うと、「全部ファイルに書き出して!」という命令です。
 プログラムで言われるままにファイルへ書き込みしていると、ファイルI/Oが増えてしまうので、ある程度溜まるまで書き込まないのです。
 つまり、これを忘れると、全然書かれていなかったり、中途半端に書かれたりします。
closeってなに?
ざっくり言うと、「ファイルの操作が終わったから、もう触らないよ!」を宣言する命令です。
 これにより、実行しているプログラム(プロセス)からファイルが解放されて、他のプログラムが書き込んだりすることができるようになります。
 つまり、これを忘れると、いつまで経っても、他のプログラムが触れません。
 ※実際は、windowsを再起動したり、プログラムが終了したりしたときに解放される(されてしまう)のですが、サーバーで動くプログラムではきっと困ります(;´Д`)
 ちゃんとcloseしてあげましょう。












