【Java】FileOutputStreamクラスを使ってファイルにデータを書き込む!
ファイルにデータを書き込むにはFileOutputStreamクラスを使用します。
FileOutputStreamクラスは、ファイルにバイト単位のデータを書き込むときに使用する出力ストリームのクラスです。
ストリームとはホースのようなもので、ホースの中に水が流れるように、ストリームの中をデータが流れていくイメージです。
そのため、FileOutputStreamクラスを使用すること作成したファイルにデータ内容を書き込むことができます。
今回はFileクラスのFileOutputStreamクラスを使って、ファイルにデータの書き込みを行っていきます。
目次
FileOutputStreamクラスとは
FileOutputStreamクラスとは、ファイルにバイト単位のデータを書き込むときに使用する出力ストリームのクラスです。
FileOutputStreamクラスの書き方
FileOutputStreamクラスの構文は下記となります。
1 |
import java.io.FileOutputStream; |
FileOutputStreamクラスが使用できるようにFileOutputStreamをインポートする必要があります。
インポートすることでwriteメソッドなど、FileOutputStreamクラスで準備されているメソッドを使用できるようになります。
ファイルにデータを書き込むサンプルコード
ファイルにデータを書き込むサンプルコードを紹介します。
例
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 |
// ファイルにデータを書き込む import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class Main { public static void main(String[] args) throws Exception { // 書き込みを行う値 String str1 = "ABCDEF"; // ストリームを使用してファイルに書き込む Main.stream(str1); // チャネルを使用してファイルに書き込む Main.channel(str1); } // ストリームを使用してファイルに書き込むメソッド static void stream(String strA) throws Exception { // バッファを使用した出力ストリームを作成 BufferedOutputStream outStr = new BufferedOutputStream( new FileOutputStream("c:/work/Stream1.txt", true)); // 出力ストリームへ書き込みを行う outStr.write(strA.getBytes()); // 出力ストリームを閉じる outStr.close(); } // チャネルを使用してファイルに書き込むメソッド static void channel(String strA) throws Exception { // 出力ストリームを作り、そこからファイルチャネルを作成する FileOutputStream outStr = new FileOutputStream ( "c/work/Stream2.txt"); FileChannel channel = outStr.getChannel(); // バッファサイズ final int bufferSize = 64; // ByteBufferte ByteBuffer byteBuf = ByteBuffer.allocateDirect(bufferSize); // バッファへ値を設定する。 byteBuf.put(strA.getBytes()); // バッファ内のポジションとリミットの移動 byteBuf.flip(); // チャネルへ書き込みを行う channel.write(byteBuf); // チャネルを閉じる channel.close(); } } |
出力結果
ABCDEF
サンプルコードをを実行すると、「C:\work」以下にStream1.txtとStream2.txtが作成され、Stream1.txtとStream2.txtの内容は、ABCDEFと表示されます。
FileChannelクラスを使用してファイルにデータを書き込む場合
サンプルコードのchannelメソッドでは、チャネルを使用してファイルにデータを書き込んでいます。
FileChannelクラスのインスタンスはFileOutputStreamクラスのgetChannelメソッドで取得します。
「Buffer」のサブクラスの「ByteBuffer」クラスに書き込むデータを設定し、FileChannelクラスの writeメソッドを呼び出してファイルにデータを書き込みます。
最後に「Channel」クラスから継承された「close」メソッドを呼び出し、チャネルを閉じます。
今回のポイント
FileOutputStreamクラスでファイルにデータを書き込む
ファイルにデータを書き込むにはFileOutputStreamlクラスを使用する。
⚫︎ リソースにデータを書き込む場合は、出力ストリームを使用し、リソースがファイルの場合は、FileOutputStreamクラスを使用する
⚫︎ FileOutputStreamクラスを作成する際、第1パラメータに出力したいファイルを、第2パラメータにtrueを指定すると、既存のファイルの内容に追加して書き込みを行うことができる
⚫︎ BufferedOutputStreamクラスを使用すると、ファイルへのデータの書き込みを効率よく行うことができる
⚫︎ BufferedOutputStreamクラスのwriteメソッドでデータの書き込みを行い、全てのデータの書き込みが終了したら、BufferedOutputStreamクラスのcloseメソッドを呼び出す
⚫︎ FileChannelクラスを使用してファイルにデータを書き込む場合はFileOutputStreamクラスgetChannelメソッドを使用する
関連記事
FileInputStreamクラスでファイルにデータを読み込む方法についてはこちらをご参考ください。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。