LoginSignup
0
0

More than 5 years have passed since last update.

javaのシリアライズ(Serializable)

Last updated at Posted at 2018-11-11

1.データクラスをSerializableをインプリメントする

class Person implements Serializable {
private String name = "Tom";
private int age = 16;
public Person () {

}
public Person(String name ,int age) {
    this.name = name;
    this.age = age;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

@Override
public String toString() {
    return "Person [name=" + name + ", age=" + age + ", getClass()=" + getClass() + ", hashCode()=" + hashCode()
            + ", toString()=" + super.toString() + "]";
}
}

2.ファイル出力先決める

private static String filename = String.format("D:%s99_temp%sseri", File.separator,File.separator);

3.シリアライズする

private static void serializable (Person person ) {
    try {
        ObjectOutputStream oOutputStream = new ObjectOutputStream(new FileOutputStream(filename));
        oOutputStream.writeObject(person);
        oOutputStream.close();
    } catch (FileNotFoundException e) {
        // TODO 自動生成された catch ブロック
        e.printStackTrace();
    } catch (IOException e) {
        // TODO 自動生成された catch ブロック
        e.printStackTrace();
    }
}

4.反シリアライズする、(保持ファイルをオブジェクト化する)

private static void deserializable() {
    try {
        ObjectInputStream oInputStream = new ObjectInputStream(new FileInputStream(filename));
        Person person = (Person) oInputStream.readObject();
        System.out.println(person.toString());
        oInputStream.close();
    } catch (ClassNotFoundException e) {
        // TODO 自動生成された catch ブロック
        e.printStackTrace();
    } catch (IOException e) {
        // TODO 自動生成された catch ブロック
        e.printStackTrace();
    }
}

5.テストする

public static void main(String[] args) {
    serializable(new Person());
    deserializable();
}

※結果:Person [name=Tom, age=16, getClass()=class com.yanheng.serializable.Person, hashCode()=1607521710, toString()=com.yanheng.serializable.Person@5fd0d5ae]

6.まとめ

No. 使用クラス、インターフェース 備考
1.データクラス継承 Serializable シリアライズ
3.シリアライズ ObjectOutputStream オブジェクトの書き出し
3.シリアライズ FileOutputStream ファイルの書き出し
4.反シリアライズする ObjectInputStream オブジェクトの読み込み
4.反シリアライズする FileInputStream ファイルの読み込み

サンプルコード

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0