JavaのDataOutputStreamについて

JavaのDataOutputStreamについて

DataOutputStreamとは

DataOutputStreamを使う理由

DataOutputStreamの使い方

よく使われるメソッド

使用例

注意点

DataOutputStreamとは

DataOutputStreamはJavaのjava.ioパッケージに属するクラスで、基本データ型(int、float、doubleなど)や文字列をバイトストリームとして書き込むために使用されます。主にデータを効率的かつプラットフォーム非依存な形式で保存したり、通信で送信したりする際に役立ちます。

DataOutputStreamを使う理由

通常のOutputStreamではバイト単位でデータを扱いますが、DataOutputStreamを使うと、数値や文字列などの高レベルなデータ型を簡単に扱えます。また、データの書き込み形式がプラットフォームに依存しないため、異なる環境間でデータを共有する際に便利です。

DataOutputStreamの使い方

DataOutputStreamを使用するには、以下の手順を踏みます:

  1. 出力先を指定してOutputStreamを作成します(例:FileOutputStream)。
  2. DataOutputStreamにラップします。
  3. writeIntwriteUTFなどのメソッドを使用してデータを書き込みます。
  4. 作業が終わったらcloseメソッドでストリームを閉じます。

よく使われるメソッド

  • writeInt(int v): 整数を4バイトで書き込む。
  • writeFloat(float v): 浮動小数点数を4バイトで書き込む。
  • writeDouble(double v): 倍精度浮動小数点数を8バイトで書き込む。
  • writeUTF(String str): UTF形式で文字列を書き込む。
  • writeBoolean(boolean v): ブール値を書き込む。
  • writeLong(long v): 長整数を8バイトで書き込む。

使用例

整数と文字列を書き込む例


import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class DataOutputStreamExample {
    public static void main(String[] args) {
        try (FileOutputStream fos = new FileOutputStream("output.dat");
             DataOutputStream dos = new DataOutputStream(fos)) {

            // 整数の書き込み
            dos.writeInt(42);

            // 浮動小数点数の書き込み
            dos.writeFloat(3.14f);

            // 文字列の書き込み
            dos.writeUTF("Hello, World!");

            System.out.println("データが正常に書き込まれました。");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
    

データの読み取り

書き込んだデータをDataInputStreamを使って読み取る例を示します。


import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;

public class DataInputStreamExample {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("output.dat");
             DataInputStream dis = new DataInputStream(fis)) {

            // データの読み取り
            int intValue = dis.readInt();
            float floatValue = dis.readFloat();
            String stringValue = dis.readUTF();

            // 読み取ったデータの表示
            System.out.println("整数: " + intValue);
            System.out.println("浮動小数点数: " + floatValue);
            System.out.println("文字列: " + stringValue);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
    

複数データ型を書き込む例


import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class MultiTypeExample {
    public static void main(String[] args) {
        try (FileOutputStream fos = new FileOutputStream("multi.dat");
             DataOutputStream dos = new DataOutputStream(fos)) {

            dos.writeBoolean(true);
            dos.writeChar('A');
            dos.writeLong(123456789L);

            System.out.println("複数のデータ型が書き込まれました。");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
    

注意点

  • 書き込む順序と読み取る順序が一致している必要があります。順序が異なると正しくデータを復元できません。
  • ストリームを閉じないとデータが完全に書き込まれない場合があります。必ずcloseメソッドを呼び出すか、try-with-resources構文を使用してください。
  • バイナリ形式でデータが保存されるため、人間が直接ファイルを読み取るのは困難です。

DataOutputStreamは効率的かつ正確なデータ保存を可能にする強力なツールです。適切に使用することで、さまざまなアプリケーションで活用できます。

コメントを残す

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