IT

ObjectInputStream,ObjectOutputStream 클래스를 사용 하기 위해서는
대상 클래스를 Serializable 인터페이스를 상속받아야 한다.

//예제 대상클래스
package day14;

import java.io.Serializable;
import java.util.Scanner;

public class Friend1 implements Serializable{
 private String name;
 private String jumin;
 private String tel;
 private String addr;
 transient Scanner s; //객체화 시킬때 제외하라는 키워드
  
 public Friend1() {
  super();
  // TODO Auto-generated constructor stub
  s = new Scanner(System.in);
  System.out.print("name=");
  name=s.nextLine().trim();
  
  System.out.print("jumin=");
  jumin=s.nextLine().trim();
  
  System.out.print("tel=");
  tel=s.nextLine().trim();
  
  System.out.print("addr=");
  addr=s.nextLine().trim();
 }
 
 public String getName() {
  return name == null ? "" : name.trim();
 }
 public String getJumin() {
  return jumin == null ? "" : jumin.trim();
 }
 public String getTel() {
  return tel == null ? "" : tel.trim();
 }
 public String getAddr() {
  return addr == null ? "" : addr.trim();
 }
  
}

//메인클래스
package day14;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Scanner;

public class Friend1_Main {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Friend1_Main fm = new Friend1_Main();
  fm.file_use();
 }

 private void file_use() {
  // TODO Auto-generated method stub
  try {
   File dir = new File("src\\day14");
   File file = new File(dir,"myfriend.txt");
   Scanner key = new Scanner(System.in);
   ArrayList<Friend1> arr = new ArrayList<Friend1>();
   if(file.exists())
   {
    ObjectInputStream obj = new ObjectInputStream(new FileInputStream(file)); 
    arr=(ArrayList<Friend1>)obj.readObject();
    obj.close();
   }else{
    file.createNewFile();
   }
   while(true){
    
    System.out.println("1.친구등록  2.전체보기  3.친구찾기  4.종료");
    
    int num = key.nextInt();
    if(num==1){   //친구등록
     Friend1 f = new Friend1();
     arr.add(f);
     System.out.println("친구 1명 등록");
    } else if(num==2){ //전체보기
     for (Friend1 f : arr){
      System.out.println("이름 : "+f.getName()); 
      System.out.println("주민 : "+f.getJumin());
      System.out.println("전화 : "+f.getTel());
      System.out.println("주소 : "+f.getAddr());
     }
    } else if(num==3){ //친구찾기
     
    } else if(num==4){ //종료&저장
     ObjectOutputStream oos =
      new ObjectOutputStream(new FileOutputStream(file));
     oos.writeObject(arr);
     oos.close();
     System.exit(0);
    } else{    //입력오류
     System.out.println("입력오류");
    }
   }
  } catch (Exception e) {
   // TODO: handle exception
   e.printStackTrace();
  }
 }

}


Posted by sinpk