객체의 입출력은 스트림 기반이다.

객체의 입출력에는 직렬화가 필요하다. 이를 위해 java.io.Serializable 이라는 인터페이스를 사용한다.

사용할 객체의 클래스 선언부에 'implements Serializable'를 쓰면된다.

class 클래스명 implements Serializable {
....
}


유형별 객체 출력

FIle

File f = new File("파일이름");
FileOutputStream fos = new FileOutputStream(f, true);
BufferedOutputStream bos = new BufferedOutputStream(fos);
ObjectOutputStream oos = new ObjectOutputStream(bos);
\


유형별 객체 입력

FIle

File f = new File("./object_io_test.txt");
FileInputStream fis = new FileInputStream(f);
BufferedInputStream bis = new BufferedInputStream(fis);
ObjectInputStream ois = new ObjectInputStream(bis);


예제)

테스트 객체

import java.io.*;

public class TestClass1 implements Serializable {
	private byte a;
	private int b;
	private float c;
	private String d;
	
	public byte getA() {
		return a;
	}
	public void setA(byte a) {
		this.a = a;
	}
	public int getB() {
		return b;
	}
	public void setB(int b) {
		this.b = b;
	}
	public float getC() {
		return c;
	}
	public void setC(float c) {
		this.c = c;
	}
	public String getD() {
		return d;
	}
	public void setD(String d) {
		this.d = d;
	}
	
	public String toString() {
		return this.a + " / " + this.b + " / " + this.c + " / " + this.d;
	}
}


출력

import java.io.*;

public class ObjectOutputTest {
	public static void main(String[] ar) {
		try {
			File f = new File("./object_io_test.txt");
			FileOutputStream fos = new FileOutputStream(f, true);
			BufferedOutputStream bos = new BufferedOutputStream(fos);
			ObjectOutputStream oos = new ObjectOutputStream(bos);
			
			TestClass1 tc1 = new TestClass1();
			
			tc1.setA((byte)97);
			tc1.setB(18);
			tc1.setC(12.8f);
			tc1.setD("test1");
			
			TestClass1 tc2 = new TestClass1();
			
			tc2.setA((byte)98);
			tc2.setB(28);
			tc2.setC(22.8f);
			tc2.setD("test2");
			
			oos.writeObject(tc1);
			oos.writeObject(tc2);
			oos.close();
			
			
		} catch (Exception ex) {			
		}
	}
}


입력

import java.io.*;

public class ObjectInputTest {
	public static void main(String[] ar) {
		try {
			File f = new File("./object_io_test.txt");
			FileInputStream fis = new FileInputStream(f);
			BufferedInputStream bis = new BufferedInputStream(fis);
			ObjectInputStream ois = new ObjectInputStream(bis);
			
			TestClass1 tc1 = (TestClass1)ois.readObject();
			TestClass1 tc2 = (TestClass1)ois.readObject();
			
			ois.close();
			
			System.out.println("tc1: " + tc1.toString());
			System.out.println("tc2: " + tc2.toString());
			
		} catch (Exception ex) {
		}
	}
}


객체를 파일로 출력 후 입력 테스트를 해보면 다음과 같이 읽힐 것이다.


Posted by 후니아부지
: