일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 오라클
- 연산자
- 다형성
- Method
- array
- 코틀린#클래스#상속
- list
- JavaScript
- String
- GUI
- property
- 설치
- kotlin #return #jump
- html
- 연락처 프로그램
- javaservlet
- springframework
- 파일 입출력
- 윈도우 #단축키
- jsp
- 자바
- function
- 데이터베이스
- css
- 상속
- Java
- jQuery
- Event
- spring
- File 클래스
- Today
- Total
Binary World
JAVA CLASS : 파일 입출력(File 클래스) 02 - Serializable 본문
<객체 타입 파일 입출력 : Serializable>
* Serializable : 객체(Object) 타입을 파일에 쓰거나, 파일에서 읽어오고 싶을 때 Serializable 인터페이스를 구현하는 클래스로 선언하면 됨
* 구현해야 할 추상 메소드는 없기 때문에 implements Serializable만 추가해 주면 됨.
* 멤버 변수를 선언할 때 transient 키워드를 사용해서 선언하면, 직렬화(Serializable) 대상에서 제외
-> 파일 read/write 대상에서 제외
* 객체타입 입출력 단계
프로그램 <== FileInputStream <== 파일(HDD)
프로그램 <== ObjectInputStream <== FileInputStream <== 파일(HDD)
프로그램 ==> ObjectOutputStream ==> BufferedOutputStream ==> FileOutputStream ==> 파일(HDD)
Serializable 인터페이스를 구현한 클래스만 ObjectInputStream, OjectOutputStream에서 사용할 수 있음
<프로그램 코드>
Member.java (Serializable 인터페이스를 구현한 클래스)
package edu.java.file07; import java.io.Serializable; public class Member implements Serializable{
private /*transient*/ int no; private String id; private String pw;
public Member(int no, String id, String pw){ this.no = no; this.id = id; this.pw = pw; }
public void displayInfo() { System.out.println("--- 회원 정보 ---"); System.out.println("번호 : " + no); System.out.println("아이디: " + id); System.out.println("비밀번호: " + pw); }
} // end class member |
1. ObjectOutputStream, BufferedOutputStream, FileOutputStream을 사용해서 ArrayList<Member> 객체를 파일에 저장
* FileMain12.java
package edu.java.file12; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.util.ArrayList; import edu.java.file07.Member; public class FileMain12 { public static void main(String[] args) { OutputStream out = null; BufferedOutputStream bout = null; ObjectOutputStream oout = null; try { out = new FileOutputStream("temp/list.txt"); bout = new BufferedOutputStream(out); oout = new ObjectOutputStream(bout);
ArrayList<Member> list = new ArrayList<>(); for(int i= 0; i < 100; i++){ String id = "Memeber" + i; String pw = "Pw" + i; Member m = new Member(i, id, pw); list.add(m); } // end for
oout.writeObject(list); // ArrayList<> 클래스도 serializable 인터페이스를 구현하고 있기 때문에 사용 가능 System.out.println("파일 저장 성공"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { oout.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } |
- FileInputStream, BufferedInputStream, ObjectInputStream을 사용해서 ArrayList<Member> 파일에서 읽음
* FileMain13.java
package edu.java.file13; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.util.ArrayList; import edu.java.file07.Member; public class FileMain13 { public static void main(String[] args) { InputStream in = null; BufferedInputStream bin = null; ObjectInputStream oin = null;
try { in = new FileInputStream("temp/list.txt"); bin = new BufferedInputStream(in); oin = new ObjectInputStream(bin);
ArrayList<Member> list = (ArrayList<Member>) oin.readObject();
for(Member m : list){ m.displayInfo(); }
System.out.println("파일 출력 성공"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { oin.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
} } |
* 출력화면
--- 회원 정보 --- 번호 : 0 아이디: Memeber0 비밀번호: Pw0 --- 회원 정보 --- 번호 : 1 아이디: Memeber1 비밀번호: Pw1 --- 회원 정보 --- 번호 : 2 아이디: Memeber2 비밀번호: Pw2 . . . . --- 회원 정보 --- 번호 : 97 아이디: Memeber97 비밀번호: Pw97 --- 회원 정보 --- 번호 : 98 아이디: Memeber98 비밀번호: Pw98 --- 회원 정보 --- 번호 : 99 아이디: Memeber99 비밀번호: Pw99 파일 출력 성공 |
'개발자의 길 > JAVA' 카테고리의 다른 글
JAVA CLASS : GUI (스윙) (0) | 2017.01.17 |
---|---|
JAVA CLASS : 파일 입출력(File 클래스) 03 - 폴더 생성, 삭제, 변경 (0) | 2017.01.16 |
JAVA CLASS : 파일 입출력(File 클래스) 01 - 기본 정의 및 사용 (0) | 2017.01.12 |
JAVA CLASS : 쓰레드(Thread) (0) | 2017.01.12 |
JAVA CLASS : 예외(Exception) (0) | 2017.01.12 |