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

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

関連記事

TomcatにWARファイルをデプロイする方法

  <目次> (1) TomcatにWARファイルをデプロイする方法  (1-1) STEP1:WARファイルの準備  (1-2) STEP2:WARファイルをサーバ上に配備  (1-3) …

JVMの基本アーキテクチャと各サブシステム等の概要説明について

(0)目次&概説 (1) 記事の目的 (2) Javaのアーキテクチャ概要・概観 (3) JVMのアーキテクチャ概要  (3-1) JVMの概観  (3-2) JVMの主要サブシステム1:Class …

セッションIDとは?JSPでsessionを保存&取得するサンプルプログラムと代表的なメソッド紹介

(0)目次&概説 (1) セッションとは  (1-1) 概要  (1-2) サンプルプログラム   (1-2-1) 概要&画面遷移   (1-2-2) HelloSession.jsp   (1-2- …

JavaのhashCode()で31を掛け算する理由について

<目次> (1) JavaのhashCode()で31を掛け算する理由について  (1-1) ハッシュの計算のソースコード  (1-2) ソースコードに登場する代表的な変数  (1-3) ソースコード …

JSPやServletの画面をスマホ表示に対応させる方法~メディアクエリの導入~

<目次> (1) JSPやServletの画面をスマホ表示に対応させる方法 (2) 設定手順  (2-1) Step1:ビューポートの設定  (2-2) Step2:メディアクエリを記述したcssファ …

  • English (United States)
  • 日本語
Top