보조 스트림(2)

2022. 5. 1. 21:19java/java

* 기본 타입 입출력 보조 스트림

DataInputStream dis = new DataInputStream(바이트입력스트림);   //생성자에 바이트입력스트림 입력할 것
DataOutputStream dos = new DataOutputStream(바이트출력스트림);

 

DataInputStream, DataOutputStream

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class DataInputOUputStreamExample {

	public static void main(String[] args) throws IOException {
		FileOutputStream fos = new FileOutputStream("C:/Temp/primitive.dat");
		DataOutputStream dos = new DataOutputStream(fos);
		
		dos.writeUTF("홍길동");	//기본형은 아니지만 문자열은 writeUTF()메서드르 쓴다
		dos.writeDouble(95.5);
		dos.writeInt(2);
		
		dos.flush(); dos.close(); fos.close();
		
		FileInputStream fis = new FileInputStream("C:/Temp/primitive.dat");
		DataInputStream dis = new DataInputStream(fis);
		
		String name  = dis.readUTF();		//출력했던 순서대로 읽어야 한다.
		double score = dis.readDouble();
		int order    = dis.readInt();
		
		System.out.println(name + " : " + score + " : " + order);
		
		dis.close(); fis.close();
	}
}

 

 

*프린터 보조 스트림

 

PrintStream ps = new PrintStream(바이트출력스트림);
PrintWriter pw = new PrintWriter(문자출력스트림);

 

*객체 입출력 보조 스트림

 1) 객체를 파일 또는 네트워크로 입출력할 수 있는 기능 제공

 2) ObjectInputStream, ObjectOutputStream

(바이트 배열을 객체로 만드는 작업 - 역직렬화) (객체를 바이트 배열로 만드는 작업 - 직렬화)

 

ObjectInputStream ois  = new ObjectInputStream(바이트입력스트림);
ObjectOutputStream oos = new ObjectOutputStream(바이트출력스트림);

oos.writeObject(객체);
객체타입 변수 = (객체타입) ois.readObject();

 

 3) 직렬화가 가능한 클래스(Serializable)

  - 자바는 Serializable 인터페이스를 구현한 크랠스만 직렬화할 수 있도록 제한

 4) serialVersionUID 필드

  - 직렬화된 객체를 역질렬화할 때는 직렬화 했을 때와 같은 클래스를 사용

  - 클래스의 이름이 같더라도 클래스의 내용이 변경된 경우 역질렬화는 실패

  - serialVersionUID는 같은 클래스임을 알려주는 식별자 역할

       (Serializable) 인터페이스가 구현되면 컴파일시에 자동적으로 serialVersionUID 정적 필드가 추가됨

  - 불가피한 수정이 있을 경우 명시적으로 serialVersionUID를 선언

static final long serialVersionUID = 정수값;​

 

'java > java' 카테고리의 다른 글

TCP 네트워킹  (0) 2022.05.07
TCP 네트워킹  (0) 2022.05.07
보조 스트림  (0) 2022.05.01
파일 입출력(2)  (0) 2022.05.01
스레드 그룹  (0) 2022.05.01