【Java】ファイルの出力、書き込みの方法!


はじめに

ファイル操作において、ファイルへアクセスするときにIOEceptionというエラーが発生することがあるので、例外処理を施すと良いです。

最下部に用語説明をつけています。

Java勉強の一環として、知識をアウトプットしたいと考え投稿をはじめました。
間違いなどあったらご指摘よろしくお願いいたします!

ファイルの内容を出力する

importするクラスは、FIle, FileReader, BufferedReader.
流れとしては、ファイルの選択→登録→バッファリング→読み込み→出力となります。

まず、今回使用するファイルを選択するため、Fileオブジェクトを作成する。
引数には、指定したいファイル名を入れる。

qiita.rb
File file = new File("ファイル名");

次に、選択したファイルを登録するため、FileReaderオブジェクトを作成する。
(ここでは登録とは、ファイルを読み込む宣言のようなものだと捉えています。)
引数には、Fileオブジェクトを入れる。

qiita.rb
FileReader fr = new FileReader(file);

さらに、効率良く処理ができるように、BufferedReaderオブジェクトを作成することでバッファリング。
引数には先ほどのFileReaderオブジェクトを入れる。

qiita.rb
BufferedReader br = new BufferedReader(fr);

BufferedReaderのreadLineメソッドを使い、ファイル内容を読み込む。
readLineメソッドは文章を1行ずつ読み、最後まできたらnullを返す。

読み込んだ文章を出力するため、while文で文字列変数にreadLineメソッドで得た文を代入し、それを出力。

qiita.rb
String str = "" ;
String data ;

while((data = br.readLine()) != null) {
            str+=data;
            }

System.out.println(str);

ファイルに書き込む

importするクラスは、FIleWriter, PrintWriter, BufferedWriter.
流れとしては、ファイルの選択→登録+バッファリング→書き込み→保存となります。

ファイルに書き込む時は、FileWriterオブジェクトを作成し、ファイルを選択する。
第1引数には、選択したいファイル名を入れる。ファイルに文字を書き込み・上書きするだけでなく、追記していきたい場合は、第2引数にtrueを入れる。

qiita.rb
FileWriter fw = new FileWriter("ファイル名",true);

その後、書き込むファイルを登録するため、PrintWriterオブジェクトを作成する。
引数にて、BufferedWriterオブジェクトを定義する。BufferedWriterオブジェクトの引数には、FileWriterオブジェクトを入れる。

qiita.rb
PrintWriter pw = new PrintWriter(new BufferedWriter(fw));

PrintWriterのprintlnメソッドを使い、文字列を書き込むことができる。
引数には書き込みたい文字列を入れる。

最後に、PrintWriterのcloseメソッドを使うことで、書き込んだ文字列をファイルに保存することができる。

qiita.rb
pw.println("書き込みたい文字列");
pw.close();

バッファリング

データを一定量までメモリにためて、たまったら処理命令を実行すること。

通常ReaderやWriterのクラスはストリームでデータを読み書きしていくが、それではデータ量が多い場合に処理が多くなりパフォーマンスが悪い。そのため、バッファリングを用いる。

ストリーム

データを文字単位、バイト単位で処理していくこと。

例外処理

エラーが発生したときにどのような処理をすれば良いかあらかじめ設定しておくこと。
try-catch文を用いる。