東大ニート

東大卒のニートが勉強したことをメモするブログ

<Java> 書き込み用クラス(PrintWriter)の使い方

来週行われるGoogle Code Jamに向けて、ファイル出力のやり方を確認したので、まとめます。

JavaDriveさんの記事を参考にさせていただきました。

www.javadrive.jp

 

PrintWriterクラスの特徴

最も便利な特徴としては、コンソールへの出力を行う時と同じように、"print"メソッドや"println"メソッドが用意されていることです。

そのため、コンソール出力の場合に

  1. System.out.println("Hello World!");

と記載するのと同じように、PrintWriterクラスのpwというインスタンスを使って、

  1. pw.println("Hello World!");

のように書けば、ファイルに出力を行うことができます。

 

PrintWriterクラスの使い方

TestPrintWriter.txtというファイルに"Hello World!"を出力する場合、コードは以下のようになります。

  1. import java.io.File;

  2. import java.io.FileWriter;

  3. import java.io.BufferedWriter;

  4. import java.io.PrintWriter;

  5.  

  6. public class Main {

  7.     public static void main(String[] args) throws Exception {

  8.         File file = new File("TestPrintWriter.txt");

  9.         FileWriter filewriter = new FileWriter(file);

  10.         BufferedWriter bw = new BufferedWriter(filewriter);

  11.         PrintWriter pw = new PrintWriter(bw);

  12.         pw.println("Hello World");

  13.         pw.close();

  14.     }

  15. }

 ポイント1. 必要なクラスのインポート(1〜4行目)

まず、java.ioパッケージに含まれるFile、FileWriter、BufferdWriter、PrintWriterクラスをインポートします。

ポイント2. Fileインスタンスの作成(8行目)

Fileインスタンスを作成し、Fileの出力するファイルのパスを指定します。

上記では相対パスで指定していますが、絶対パスで指定しても大丈夫です。

 

ポイント3. PrintWriterインスタンスの作成(9〜11行目)

PrintWriterインスタンスを作成するために、BufferedWriterインスタンスが必要となり、BufferdWriterインスタンスを作成するために、FileWriterインスタンスが必要となります。

そのため、まず9行目の「FileWriter filewriter = new FileWriter(file);」のようにFileWriterインスタンスを作成し、
次に10行目の「BufferedWriter bw = new BufferedWriter(filewriter);」のようにBufferedWriterインスタンスを作成します。

最後に「PrintWriter pw = new PrintWriter(bw);」のようにPrintWriterインスタンスを作成します。

 

ポイント4. PrintWriterインスタンスへの書き込み(13行目)

「pw.println("Hello World!");」のようにprintlnメソッドを使用して、pwに出力する内容を指定します。for文などを使用して、何行も出力することも可能です。

 

ポイント5. PrintWriterインスタンスのclose(15行目)

「pw.close();」で最後にファイルを閉じて、終了です。