【Java】FileWriterクラスを使ってテキストファイルを書き込む!
テキストファイルを書き込むにはFileWriterクラスを使用します。
FileWriterクラスは、テキストファイルを書き込むクラスとなります。
そのため、BufferedWriterクラスをセットで使用すると、書き込み処理の効率が上がるので、FileWriterクラスを使用する場合はBufferedWriterクラスを組み合わせて使用しましょう。
今回はFileWriterクラスを使って、テキストファイルの書き込みを行います。
また、Java7から使用できるようになったFileクラスのwriteメソッドを使って、テキストファイルを書き込む方法についても紹介していきます。
目次
FileWriterクラスとは
FileWriterクラスとは、テキストファイルを書き込むためのクラスで、テキストファイルの内容を元にした処理などを行うために使用します。
また、ファイルは文字のストリームで書き込まれます。
FileWriterクラスの書き方
FileWriterクラスの構文は下記となります。
1 2 |
import java.io.BufferedWriter; import java.io.FileWriter; |
FileWriterクラスをインポートすることで、FileWriterクラスで準備されているメソッドが使用できるようになります。
また、BufferedWriterクラスを使用すると、書き込み処理の効率が上がるので、FileWriterクラスを使用する場合はBufferedWriterクラスもインポートしておきましょう。
テキストファイルを書き込むサンプルコード
ファイル/ディレクトリの名前を変更するサンプルコードを紹介します。
Main.java
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 |
// テキストファイルに書き込む import java.io.BufferedWriter; import java.io.FileWriter; import java.io.PrintWriter; public class Main { public static void main(String[] args) throws Exception { // FileWriterクラスを使用してテキストファイルに書き込む Main.fileWriter(); // printWriterクラスを使用してテキストファイルに書き込む Main.printWriter(); } // FileWriterクラスを使用してテキストファイルに書き込むメソッド static void fileWriter() throws Exception { //バッファを使用した出力ストリームを作成 BufferedWriter output = new BufferedWriter( new FileWriter("C:/study/Writer1.txt")); // 出力ストリームへ書き込みを行う output.write("・北海道、東北地方、関東地方"); output.write("北海道"); output.newLine(); output.write("青森県岩手県秋田県宮城県山形県福島県"); output.newLine(); output.write("茨城県栃木県群馬県埼玉県千葉県東京都神奈川県"); output.newLine(); // 出力ストリームを閉じる output.close(); } // PrintWriterクラスを使用してテキストファイルに書き込むメソッド static void printWriter() throws Exception { //PrintWriterクラスを使用した出力ストリーム PrintWriter output = new PrintWriter( new BufferedWriter( new FileWriter("c:/study/Writer2.txt"))); // 出力ストリームへ書き込みを行う output.print("・北海道、東北地方、関東地方"); output.print(System.getProperty("line.separator")); output.print("北海道"); output.print(System.getProperty("line.separator")); //書式を指定して出力ストリームへ書き込みを行う output.printf("青森県岩手県%s宮城県山形県福島県", "秋田県"); output.print(System.getProperty("line.separator")); // 改行コードを追加して出力ストリームへ書き込みを行う output.println("茨城県栃木県群馬県埼玉県千葉県東京都神奈川県"); // 出力ストリームを閉じる output.close(); } } |
出力結果
・北海道、東北地方、関東地方
北海道
青森県岩手県秋田県宮城県山形県福島県
茨城県栃木県群馬県埼玉県千葉県東京都神奈川県
Main.javaを実行すると、「C:¥study」以下にWriter1.txtとWriter2.txtが作成されます。
また、FileWriterクラスによってWriter1.txtとWriter2.txtの内容は、
・北海道、東北地方、関東地方
北海道
青森県岩手県秋田県宮城県山形県福島県
茨城県栃木県群馬県埼玉県千葉県東京都神奈川県
が書き込まれています。
NIO.2(Filesクラス)でテキストファイルを書き込む場合
NIO.2とはJava7で導入された「java.nio.file」パッケージとそのサブパッケージとを合わせたものであり、NIO.2のFilesクラスを使用することでとても簡単にファイル処理を行うことができます。
そのため、Filesクラスででテキストファイルを書き込むにはwiterメソッドを使用します。
writeメソッドのパラメータとして第1パラメータに書き込み先パス、第2パラメータにchar配列を指定すると、char配列が表す文字列をファイルに書き込みます。
また、第2パラメータに「Iterable extends CharSequence>」インスタンスを、第3パラメータに文字コードを指定すると、「Iterable」インスタンス内のすべての要素を、改行文字を追加して結合し、ファイル書き込みます。
Main.java
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 |
// Java7でテキストファイルに書き込む import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) throws Exception { // 書き込む文字列 String writeVal = "・北海道、東北地方、関東地方" + System.getProperty("line.separator") + "北海道" + System.getProperty("line.separator") + "青森県岩手県秋田県宮城県山形県福島県" + System.getProperty("line, separator") + "茨城県栃木県群馬県埼玉県千葉県東京都神奈川県" + System.getProperty("line.separator"); // 出力ファイル Path path1 = Paths.get("C:/study/Writer3.txt"); // 出力ファイルへ書き込みを行う Files.write(path1, writeVal.getBytes()); //書き込む文字列をList<String>で用意 List<String> list = new ArrayList<String>(); list.add("・北海道、東北地方、関東地方"); list.add("北海道"); list.add("青森県岩手県秋田県宮城県山形県福島県"); list.add("茨城県栃木県群馬県埼玉県千葉県東京都神奈川県"); // 出力ファイル Path path2 = Paths.get("c:/study/Writer4.txt"); // 出力ファイルへ書き込みを行う Files.write(path2, list, Charset.defaultCharset()); } } |
出力結果
・北海道、東北地方、関東地方
北海道
青森県岩手県秋田県宮城県山形県福島県
茨城県栃木県群馬県埼玉県千葉県東京都神奈川県
Main.javaを実行すると、「C:¥study」以下にWriter3.txtとWriter4.txtが作成されます。
また、Writer3.txtとWriter4.txtの内容は、
・北海道、東北地方、関東地方
北海道
青森県岩手県秋田県宮城県山形県福島県
茨城県栃木県群馬県埼玉県千葉県東京都神奈川県
が書き込まれています。
今回のポイント
FileWriterでテキストファイル書き込む
テキストファイルに書き込むにはFileWriterクラスを使用する。
⚫︎ 文字出力ストリームであるFileWriterクラスでテキストファイルにデータを書き込む
⚫︎ 「FileWriter」インスタンスを作成する際に、第2パラメータに「true」を指定することで、既存のファイルに追加して書き込みを行うことができる
⚫︎ 「FileWriter」クラスを使用する場合は、「BufferedWriter」クラスを使用してバッファリングすることで、書き込み速度の効率をアップさせることができる
⚫︎ BuffderdWriterクラスのwriteメソッドでファイルの書き込みを行う
(BufferedWriterクラスのnewLineメソッでシステムプロパティである「line.separator」の改行文字を書き込む)
⚫︎ BufferedWriterクラスのcloseメソッドで「BufferedWriter」インスタンス と「FileWriter」インスタンスのリソースを解放する
⚫︎ PrintWriterクラスを使用することで、書式を指定しての書き込みや、改行文字を追加しての書き込みを行うことができる
⚫︎ PrintWriterクラスで通常で書き込みた場合はprintメソッド、書式を指定しての書き込みたい場合はprintfメソッド、改行文字を追加して書き込みたい場合はprintlnメソッドを使用する
⚫︎ Filesクラスのwriteメソッドでもテキストファイルを書き込むことができる
関連記事
FileReaderクラスを使ってテキストファイルを読み込む方法についてはこちらをご参考ください。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。