- 직렬화를 사용하여 저장
- 자바 프로그램에서만 사용한다는 조건에서 사용합니다.
- 클래스를 직렬화 할려면 implements Serializable를 사용해야 됩니다.
- static 변수는 직렬화 하지 못합니다.
- 클래스 중에 직렬화를 하고 싶지 않은 변수에는 transient를 사용합니다.
- 문자로 저장
- 타 프로그램에서도 저장된 객체를 사용 할 수도 있을때 사용합니다.
◆ 직렬화를 사용할 경우
try { // "dg.ser"로 저장합니다. ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("dg.ser")); oos.writeObject(d); oos.close(); // 파일이름이 "dg.ser"인 파일을 가져옵니다. ObjectInputStream ois = new ObjectInputStream(new FileInputStream("dg.ser")); d = (DungeonGame)ois.readObject(); ois.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); }
《저장》
- FileOutputStream를 사용하여 바이트 형태로 저장합니다.
- ObjectOutputStream를 사용하여 직렬화 하여 저장합니다.
- ObjectInputStream를 닫아 줍니다. ObjectInputStream를 닫으므로서 밑에 있는 FileOutputStream는 자동으로 닫힙니다.
《가져오기》
- FileOutputStream를 사용하여 바이트 형태로 읽습니다.
- ObjectOutputStream를 사용하여 클래스를 찾아서 불러온 다음 저장되었던 인스턴스 변수값을 다시 대입합니다. 직렬화된 객체의 생성자는 실행되지 않습니다.
- ObjectInputStream를 닫아 줍니다. ObjectInputStream를 닫으므로서 밑에 있는 FileOutputStream는 자동으로 닫힙니다.
◆ 문자로 저장
try { // "wawoo.txt"로 저장합니다. BufferedWriter writer = new BufferedWriter(new FileWriter("wawoo.txt")); writer.write("wawoo oops!"); writer.close(); // 파일 이름이 "wawoo.txt"인 것을 불러옵니다. BufferedReader reader = new BufferedReader(new FileReader(new File("wawoo.txt"))); String line = null; while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); }
《저장》
- FileWriter를 사용하여 문자 형태로 저장합니다.
- BufferedWriter를 사용하여 효율을 높입니다. 버퍼를 사용하는 목적중에 하나는 시스템 효율입니다. 버퍼는 box라고 생각하고 박스가 차면 한번에 데이터를 처리한다고 생각하면 됩니다.
- BufferedWriter를 닫아줍니다.여기서도 역시 BufferedReader만 관리하면 하위단에 있는 FileReader는 자동으로 닫힙니다.
《가져오기》
- FileReader를 사용하여 저장된 파일을 연결합니다.
- BufferedReader를 사용하여 효율을 높입니다.
- BufferedReader를 닫아줍니다.
관련글
댓글 없음:
댓글 쓰기