'직렬화'에 해당되는 글 1건

  1. 2013.01.31 패턴 직렬화, 패턴 복구

패턴 직렬화, 패턴 복구

개발 및 관리/Java 2013. 1. 31. 16:31 posted by HighLighter
반응형

 

//p.475 - (14장 직렬화와 파일 입출력)
배열 객체는 배열 안에 들어있는 것이 직렬화할 수 있기만 하면 직렬화할 수 있기 때문에 부울 변수의 배열을 저장하는 데는 문제가 없다.


1. 패턴 직렬화


//비트박스 코드 안에 들어갈 내부 클래스이다.
public class MySendListener implements ActionListener {

  //사용자가 버튼을 클릭해서 ActionEvent가 발생된 경우에 실행된다.
  public void actionPerformed(ActionEvent a) {

        //각 체크상자의 상태를 담아두기 위한 부울 배열을 만든다.
 boolean[] checkboxState = new boolean[256];

 for (int i = 0; i < 256; i++) {
  
   //checkboxList(체크상자로 이루어진 ArrayList)를 훑어보면서 각 체크상자의 상태를 확인하고 그 결과를 부울 배열에 추가한다. 
   JCheckBox check = (JCheckBox) checkboxList.get(i);
    if (check.isSelected()) {
  checkboxState[i] = true;
   }
 }

 try {
   FileOutputStream fileStream = new FileOutputStream(new File("Checkbox.ser"));
   ObjectOutputStream os = new ObjectOutputStream(fileStream);
   os.writeObject(checkboxState);
 } catch (Exception ex) {
  ex.printStackTrace();
 }
  } //메소드 끝
} //내부 클래스 끝

 

 

2. 패턴 복구


//비트박스 코드 안에 들어갈 내부 클래스이다.
public class MyReadInListener implements ActionListener {

  public vod actionPerformed(ActionEvent a) {
   
 boolean[] checkboxState = null;
 try {
   FileInputStream fileIn = new FileInputStream(new File("checkbox.ser"));
   ObjectInputStream is = new ObjectInputStream(fileIn);
         
          //파일에서 객체 하나(부울 배열)를 읽은 다음 부울 배열로 다시 캐스트한다. readObject()에서는 항상 Object 유형의 레퍼런스를 리턴하니까......
   checkboxState = (boolean[]) is.readObject();
 } catch (Exception ex) { ex.printStackTrace();}

 
   //실제 JCheckBox 객체로 구성된 ArrayList(checkboxList)에 들어있는 각각의 체크상자의 상태를 원래대로 복구한다.
 for (int i = 0; i< 256: i++) {
   JCheckBox check = (JCheckBox) checkboxList.get(i);
   if (checkboxState[i]) {
     check.setSelected(true);
    } else {
  check.setSelected(false);
   }
 }
 
 //현재 연주 중인 것을 멈추고 ArrayList에 들어있는 체크상자의 새로운 상태를 이용하여 시퀀스를 재구성한다.
 sequencer.stop();
 buildTrackAndStart();
  } //메소드 끝
} //내부 클래스 끝

반응형

'개발 및 관리 > Java' 카테고리의 다른 글

직렬화  (0) 2013.01.31
trasient 사용 예제  (0) 2013.01.31
역직렬화 과정에서 문제가 일어날 수 있는 경우와 아닌 경우  (0) 2013.01.31
StringTokenizer  (0) 2013.01.31
파일 입출력, 읽고 쓰기  (0) 2013.01.25