解答例 - 実習課題2 - 4.オブジェクトのシリアライズ
(実習課題2)
以下のプログラムを作成しなさい。
- 実習課題1で作成したクラスのオブジェクトをファイルへ書き込むプログラム
- 書き込むファイルは、標準入力から指定できるようにする事。プログラムの引数として指定してはいけない。
- 書き込むオブジェクトは2つ以上。
ファイルにどのように書き込まれているか確認してみる事。
解答例
/** * ObjectOutputExample.java * TECHSCORE Java 入出力4章 実習課題2 * * Copyright (c) 2004 Four-Dimensional Data, Inc. */ package com.techscore.io.chapter4.exercise2; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.ObjectOutput; import java.io.ObjectOutputStream; public class ObjectOutputExample { public static void main(String[] args) { StudentExample student1 = new StudentExample(); student1.setCourse('A'); student1.setId("X0001"); student1.setLebel(5); student1.setName("田中"); StudentExample student2 = new StudentExample(); student1.setCourse('S'); student1.setId("X0002"); student1.setLebel(3); student1.setName("山本"); try { System.out.println("ファイル名を指定してください"); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String name = reader.readLine(); ObjectOutput out = new ObjectOutputStream(new FileOutputStream(name)); out.writeObject(student1); out.writeObject(student2); out.flush(); out.close(); reader.close(); System.out.println(name + "に保存されました"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
/** * StandardInputExample.java * TECHSCORE Java 入出力4章 実習課題2 * * Copyright (c) 2004 Four-Dimensional Data, Inc. */ package com.techscore.io.chapter4.exercise2; import java.io.Serializable; public class StudentExample implements Serializable { private String id; private transient String name; private char course; private int lebel; public char getCourse() { return course; } public String getId() { return id; } public int getLebel() { return lebel; } public String getName() { return name; } public void setCourse(char course) { this.course = course; } public void setId(String id) { this.id = id; } public void setLebel(int lebel) { this.lebel = lebel; } public void setName(String name) { this.name = name; } }