데이터 스트림
Filter Stream
- 기본 스트림 외에 다른 기능을 추가하고 싶을 때 사용하는 스트림이다
- 필터 스트림을 독립적으로 사용하지 못하고 기본 스트림과의 연결이 반드시 필요하다
- 필터 스트림은 데이터를 송수신할 수 있는 기능이 없다
- 필터 스트림에 있는 입출력 함수는 직접 데이터를 입출력하는 것이 아니라 연결되어 있는 기본 스트림에 데이터를 전송하고 기본 스트림에 데이터 송수신을 하게 된다
- 필터 스트림은 생성자에 기본 스트림을 받고 있다 생성자를 통해 기본 스트림이 데이터의 송수신을 직접 담당한다
Data Stream
- 기본 스트림을 통해 데이터 송수신을 하기 위해서는 바이트 형태의 데이터로 송수신을 하게 된다
- 개발자가 직접 송수신할 데이터를 바이트화 시키거나 바이트화 되어 있는 데이터를 사용하고자 하는 형태로 변환해야 하는데 이 작업을 해주는 스트림이다
데이터 송수신 메서드
- readXXX : read메서드가 굉장히 많이 존재하는데 각 타입별로 존재하고 있다 정수형 일 경우 readInt를 사용하면 바이트로 넘어온 데이터를 정수형을 변환하여 되돌려준다
- writeXXX : 송신하고자 하는 데이터를 바이트 형태로 변환하여 기본 스트림에게 넘겨준다 정수형 일 경우 writeInt를 사용한다
DataStreamTest1.java (Data Out put Stream)
------------------------------------------------------
import java.io.DataOutputStream;
import java.io.FileOutputStream;
try {
String fileNmae = "c:\\test\\b.txx";
FileOutputStream fos = new FileOutputStream(fileName); // 기본 스트림
DataOutputStream dos = new DataOutputStream(fos); // 기본 스트림 fos를 인자 값으로 넣기
dos.writeUTF("안녕하세요");
dos.writeInt(10);
dos.writeInt(20); // 문자열 꼭 맞춰야 함
dos.flush( );
dos.close( );
fos.close( );
System.out.println("출력 완료");
}catch(Exception e) { }
* 실행시키면 c드라이브에 있는 test폴더에 b라는 텍스트 파일 생성
파일 열면 '안녕하세요' 나와 있어야 함
------------------------------------------------------
DataStreamTest2.java (Data In put Stream)
------------------------------------------------------
import java.io.DataInputStream;
import java.io.FileInputStream;
try {
String fileNmae = "c:\\test\\b.txx";
FileInputStream fos = new FileInputStream(fileName); // 기본 스트림
DataInputStream dos = new DataInputStream(fis); // 기본 스트림 fis를 인자 값으로 넣기
String str = dis.readUTF( );
int a = dis.readInt( );
int b = dis.readInt( );
dis.close( );
fis.close( );
System.out.println(str);
System.out.println(a);
System.out.println(b);
}catch(Exception e) { }
------------------------------------------------------
Console
------------------------------------------------------
안녕하세요
10
20
------------------------------------------------------