Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Java

Javaでファイルへの書き込みする方法の基礎(追記・上書き、改行の方法等)

投稿日:2021年1月12日 更新日:

<目次>

(1) Javaでファイルへの書き込みする方法の基礎(追記・上書き、改行の方法等)
 (1-1) STEP1:FileWriterクラスのインスタンス化
 (1-2) STEP2:ファイルへの書き込み
 (1-3) STEP3:クローズ処理
(2) サンプルプログラム

(1) Javaでファイルへの書き込みする方法の基礎(追記・上書き、改行の方法等)

Javaでファイル書き込みを行うには「FileWriter」クラスを使います。「FileWriter」は「1文字」単位で読み込んでいくため、「FileOutputStream」などの「1バイト」単位で読み込む方式と比較して、マルチバイト文字も読めるなどの利点があります。

(1-1) STEP1:FileWriterクラスのインスタンス化

まず初めに「FileWriter」クラスのインスタンス化を行います。コンストラクタの引数は以下の通りです。

(表:コンストラクタ引数)
第1引数 【必須】
「書き込みしたいテキストファイル」のパス
第2引数 【省略可】
ファイルを「上書き」するか「追加」するかの選択。
 ⇒trueを指定すると「追加」(元ファイルを残す)
 ⇒falseを指定すると「上書き」(元ファイルは消える)
この引数は省略可能で、省略した場合は「false」扱いになる

(構文)FileWriterインスタンス化

FileWriter [FileWriterのインスタンス名] = new FileWriter("[ファイルパス]\[ファイル名].txt",[true/false=上書き要否]);
 
加えて、インスタンス化する際は次のように「try-with-resouces」文を使うと、よりベターです(try-with-recourcesの詳細は下記の記事をご参照ください)。

 

(STEP1)FileWriterインスタンス化(try-with-recources文)
try (FileWriter writer = new FileWriter(filepath, false);)
{
	//テキストへの書き込み処理
} catch (IOException e) {
	//例外処理(パスが存在しないケースなど)
	System.out.print(e);
}

 

目次にもどる

(1-2) STEP2:ファイルへの書き込み

書き込みはFileWriterクラスのwrite()メソッドを使います。引数が異なるメソッドがいくつかありますが、代表的なものは次の通りです。
(表)

write(int) int型を指定して、対応する文字を書き込みます。
例えば文字「A」のASCIIコードは「65」なのでwrite(65)とすると「A」が書き込まれます。
write(char[]) char型の配列を指定して書き込み
write(String) String型を指定して書き込み
(例)
//文字列や変数の書き込み
writer.write("### current counter value : "+counter);
//改行の書き込み
writer.write("\r\n");
 
先ほどの(STEP1)のtry-with-recources文に追加すると次のようになります。
 
(STEP2)書き込み処理
//(STEP1) FileWriterクラスのインスタンス化(try-with-recources内)
try (FileWriter writer = new FileWriter(filepath, false);)
{
  //(STEP2) 書き込み処理
  //文字列や変数の書き込み
  writer.write("### current counter value : "+counter);
  //改行の書き込み
  writer.write("\r\n");
} catch (IOException e) {
  //例外処理(パスが存在しないケースなど)
  System.out.print(e);
}

目次にもどる

(1-3) STEP3:クローズ処理

書き込みが完了したらclose()メソッドでファイルを閉じます。
writer.close();
 
先ほどの(STEP2)のプログラムに追記すると次のようになります。
 
(STEP3)ファイルのクローズ
//(STEP1) FileWriterクラスのインスタンス化(try-with-recources内)
try (FileWriter writer = new FileWriter(filepath, false);)
{
  //(STEP2) 書き込み処理
  //文字列や変数の書き込み
  writer.write("### current counter value : "+counter);
  //改行の書き込み
  writer.write("\r\n");

  //(STEP3) ファイルのクローズ
  writer.close();
} catch (IOException e) {
  //例外処理(パスが存在しないケースなど)
  System.out.print(e);
}

目次にもどる

(1-2) サンプルプログラム

上記の(STEP1)~(STEP3)に更にmain文等を加えて、実行可能にしたコードを掲載します。

(サンプルプログラム)

import java.io.FileWriter;
import java.io.IOException;

public class IT0225_WriteText {
    public static void main(String args[]) {
        //(1)書き込み対象のテキストファイルのパスをStringで定義
        final String filepath = "/tmp/bbb.txt";
        //(STEP1) FileWriterクラスのインスタンス化(try-with-recources内)
        // 第二引数はfalseなので「上書きモード」(「追記モード」ではない)
        try (FileWriter writer = new FileWriter(filepath, false);)
        {
            //(STEP2) 書き込み処理
            //引数がString型のwrite
            writer.write("### Write String Sample");
            
            //改行もできます
            writer.write("\r\n");
            
            //引数がint型のwrite(65=Aの10進数のASCIIコード)⇒ 「A」が追記される
            writer.write(65);
            writer.write("\r\n");
            
            //引数がchar型のwrite ⇒ 「ABC」が追記される
            char[] chars = new char[] {'A','B','C'};
            writer.write(chars);
            writer.write("\r\n");
            
            //(STEP3) ファイルのクローズ
            writer.close();
            
        } catch (IOException e) {
            //例外処理(パスが存在しないケースなど)
            System.out.print(e);
        }
    }
}

(図121)実行結果
ターミナルから生成したテキストファイルを読み込み、意図した書き込みがされているか?を確認。

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-Java

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Javaのスレッドとは?概念やサンプルプログラムのご紹介

  <目次> (1) Javaのスレッドとは?概念やサンプルプログラムのご紹介  (1-1) Javaのスレッドとは?  (1-2) 方法①:Threadクラス継承の構文  (1-3) 方法 …

サーブレットとは?その役割やHelloWorldサンプルコードのご紹介

(0)目次&概説 (1) サーブレットの基本  (1-1) サーブレットとは?  (1-2) サーブレットの前身技術との比較  (1-3) サーブレットとJSPの違い  (1-4) サーブレットのHe …

TwitterのAPIライブラリでリツイートした人の一覧を取得する方法

<目次> (1) TwitterのAPIライブラリでリツイートした人の一覧を取得する方法  (1-1) 構文  (1-2) サンプルプログラム (1) TwitterのAPIライブラリでリツイートした …

Javaのアーキテクチャ概要やプログラムのコンパイルから実行までの流れ

(0)目次&概説 (1) 記事の目的  (1-1) 目的 (2) Javaのアーキテクチャ概要・概観  (2-1) プログラムのコンパイル~実行の流れ  (2-2) Javaアーキテクチャの特徴    …

APサーバ(Java)⇒DBサーバ(OracleDB 11g)へJDBC接続する方法まとめ

(0)目次 (1) 前提条件 (2) JDBCドライバーのインストール  (2-1) JDBCドライバーをダウンロード  (2-2) APサーバにアップロード・解凍 (3) プログラムの実装  (3- …

  • English (United States)
  • 日本語
Top