자바

데이터 스트림

khon98 2020. 7. 13. 22:10

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

------------------------------------------------------