年収アップ無料転職カウンセリング実施中! | 転職エージェントはマイナビエージェント

Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職

FileInputStream/FileOutputStreamクラス

バイナリファイルの操作 – FileInputStream/FileOutputStreamクラス
FileInputStream(String name)
FileOutputStream(String name [,boolean append])
name:ファイルのパス append:追記モードで開くか

画像などのバイナリファイルを読み書きするには、FileInputStream/FileOutputStreamクラスを利用します。FileInputStream/FileOutputStreamクラスの主なメソッドは、以下の通りです。

FileInputStream/FileOutputStreamクラスの主なメソッド
クラス メソッド 概要
FileInputStream int read([byte[] b [,int off, int len]]) 入力ストリームからバイト配列bに読み込み
(offは開始位置、lenは読み込み長)
long skip(long n) 読み込みをnバイトだけスキップ
void close() ストリームを閉じる
FileOutputStream void write(byte[] b [,int off, int len] バイト配列bの内容を出力ストリームに書き出し
(offは開始位置、lenは読み込み長)
void close() ストリームを閉じる

文字ストリームを取得できてしまえば、あとはread/writeメソッドで読み書きする流れは、先ほどと同じです。たとえば以下は、テキストファイルsample.txtの内容をsample2.txtに転記する例です。

StreamTrans.java

package com.example.mynavi.stream;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class StreamTrans {
  public static void main(String[] args) {
    try (★InputStreamReader reader = new InputStreamReader(
             new FileInputStream("C:/data/sample.txt"), "UTF-8");
         OutputStreamWriter writer = new OutputStreamWriter(
           new FileOutputStream("C:/data/sample2.txt"), "UTF-8")★) {
      int data;
      while ((data = reader.read()) != -1) {
        writer.write(data);
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

テキストファイルを読み書きする簡易な手段として、他にFileReader/FileWriterというクラスも用意されています。ただし、これらのクラスでは、文字コードはプラットフォーム標準のもので固定となります。
アプリケーションの可搬性などを考慮するならば、InputStreamReader/OutputStreamWriterクラスを優先して利用するようにしてください。

ストリーム
ストリーム
FileInputStream/FileOutputStreamクラス
InputStreamReader/OutputStreamWriterクラス
BufferedReader/BufferedWriterクラス
ObjectInputStream/ObjectOutputStreamクラス
Fileクラス

年収アップ無料転職カウンセリング実施中! | 転職エージェントはマイナビエージェント

Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職