Javaでファイルに書き込み・出力する(新規/上書き/追記/文字コード)

Javaでファイルに出力する方法がわからない
ファイルの内容を新規に作成・書き込み・上書きする方法を知りたい
バイナリデータを書き込む方法が知りたい
文字コードを指定する方法を知りたい

Javaのファイル操作で、ファイルに書き込む処理はよく使用されます。どのような用途でもファイルに書き込む基本的な流れは変わりませんが、用途別に処理が異なるため、使い方がいまいちわからない方も多いのではないでしょうか?

そこで、この記事ではファイルの書き込み・出力方法について、基本的な方法からバイナリデータを指定する方法、文字コードを指定する方法など、応用的な内容についても解説していきます。

この記事はこんな人のために書きました。

  • ファイルに書き込む方法の基本を知りたい方
  • バイナリデータや文字コードを指定して書き込みをしたい方

今回はそんなファイルの処理について、さまざまな方法をわかりやすく解説します!

Javaでファイルに出力する方法

ファイルに出力する基本的な方法

Javaでファイルを出力するための基本操作は、書き込むファイルを指定する→ファイルに書き込む→ファイルを閉じるとなります。

ファイルに文字列を書き込むには、書き込むファイルを指定するFileWriterクラスと、ファイルの書き込み操作などを行うPrintWriterクラスを使用します。

それぞれ、以下のようにクラスをインポートします。

また、実際にファイルに書き込むには、FileWriterクラスのprintlnメソッドを使用します。

ファイルに書き込む方法(上書き)

以下にファイルに文字列を書き込む基本的な方法を記述します。

このサンプルコードでは、FileWriterクラスを宣言し、書き込むファイルを指定しています。

次にPrintWriterクラスを宣言し、BufferedWriterクラスを拡張して引数にFileWriterクラスのオブジェクトを指定します。PrintWriterクラスのprintlnメソッドの引数に書き込む文字列を指定すれば、指定したファイルに文字列が書き込まれます。

最後は必ずcloseメソッドを使用して、ファイル処理のリソースを開放します。

なお、このサンプルコードではすでに指定したTXTファイルが存在する場合、ファイルの内容は上書きされます

上書きではなく、追記して書き込むこともできます。

ファイルに追記する方法

ファイルに追記する場合は、FileWriterクラスの引数にtrueを指定すれば、内容を追記して書き込むことが可能です。

以下に基本的な書き込み方法で紹介したサンプルと、同じファイルに内容を追記する処理を記述します。

実行結果を確認すると、ファイルに内容が追記されていることがわかります。

バイナリデータをファイルに書き込む方法

BufferedOutputStreamで書き込む方法

バイナリデータとは、簡単に説明するとコンピュータが理解できるデータとなります。

実際のシステム開発において、データをバイナリに変換して処理を行うことはよくあります。

バイナリデータを書き込む方法はいくつかありますが、ここではBufferedOutputStreamクラスを使用した書き込み方法を紹介します。

BufferedOutputStreamクラスは、以下のようにクラスをインポートします。

以下にバイナリデータをファイルに書き込む方法を記述します。

このサンプルコードでは、BufferedOutputStreamクラスを宣言し、書き込むファイルを指定しています。次にASCIIコードで書き込むため、10進数で表現されたbyte型のデータを指定します。

BufferedOutputStreamクラスのwriteメソッドを使用して、書き込む内容をバッファに格納しておきます。

BufferedOutputStreamクラスのflushメソッドを使用すれば、バッファに溜め込んだ値が指定したファイルに書き込まれます。

ファイルを確認してみると、”JAVA”と記述されていることがわかります。

FileOutputStreamで書き込む方法

ここでは、FileOutputStreamクラスを使用して、ファイルに書き込む方法を解説します。

次のプログラムで確認してみましょう。

このプログラムでは、FileOutputStreamクラスのオブジェクトを、ファイル/パスを指定して生成しています。

次にFileOutputStreamのwriteメソッドを使用して、書き込むデータをバッファに保存しています。

バッファに保存したデータは、flushメソッドを使用することでファイルに書き込まれ、最後にcloseメソッドでファイル操作のリソースを開放します。

また、FileOutputStreamクラス単体では、byte型のデータの書き込みのみで、文字列をファイルに書き込むことはできません。

FileOutputStreamクラスの詳しい使い方はこちらの記事で解説しているので、ぜひ確認してください。

【Java】FileOutputStreamでファイルに書き込む
更新日 : 2019年6月10日

文字コードを指定して出力する方法

文字コードを指定してファイル操作を行う場合は、以下の記事で詳細な解説をしています!

【Java】encodingを指定して読み書きする(CSV、テキストファイル)
更新日 : 2019年5月28日

文字コードを変更してファイル出力する方法

応用的な使い方として、文字コードを指定してファイルを読み込み、文字コードを変更してファイルに書き込む方法を、以下に記述します。

サンプルでは、文字コードUTF-8を指定してファイルを読み込み、while文でファイル終端まで内容を取得し、文字列を一旦バイナリデータに変換したあとに、文字コードShift-JISに変換しています。

次にShift-JISに変換した文字列を、PrintWriterクラスのprintlnメソッドを使用してファイルに書き込みます。

最後はPrintWriterクラスのcloseメソッドを使用してファイル処理のリソースを開放します。

Fileクラスについてもっと詳しく知りたい方へ

Fileクラスのさまざまな使い方については、以下の記事にまとめていますので、ぜひ参考にしてくださいね!

JavaのFileクラスをマスター!基礎から便利な使い方まで総まとめ
更新日 : 2019年5月10日

ファイル操作総まとめ

ファイル操作の詳しい使い方はこちらの記事で詳しく解説しているので、ぜひ確認してください。

【Java入門】Fileクラスでファイル操作をする方法まとめ
更新日 : 2019年6月6日

まとめ

ここでは、ファイルの書き込み操作について、基本的な書き込みや追記する方法、バイナリデータの書き込みや文字コードを指定する方法についても説明しました。

ファイルの書き込み操作は実際に使用する機会が多いと言えます。

もしファイルの書き込み処理を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

ヤマシタ

エンジニア歴10年のフリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、200本以上の執筆経験があります。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説