2013년 8월 8일 목요일

[2주차 4일] 입출력(I/O) 2 - Data processing steam class

Data processing stream class

: 중간에서 데이터를 가공하는 역할

- 구분하는 방법
: 생성자에서 다른 스티림을 요구한다면이것은 혼자 입.출력을 할 수 없다는 뜻이기 때문 데이터 가공 클래스라 할 수 있다. API를 확인해보면 확실히 알 수 있을 것이다.


ex>
// Data sink stream class
FileOutputStream out = new FileOutputStream("test1.data");
// Data processing stream class
DataOutputStream out2 = new DataOutputStream(out);

byte b = 0x34;
short s = 0x0a34;
int i = 0x0a0b0c34;
char c = 0xac01;
boolean bn = true; //불가능

out2.write(b);
out2.write(s);
out2.write(i);
out2.write(c);
out2.writeBoolean(bn);//불가능했던것이 Data processing stream class에서는 가능

out2.close();
out.close();

위의 예제에서 보면 DataOutputStream클래스가 출력해야할 값을 byte단위로 알아서 잘라서 파라미터로 받은  FileOutputStream이용해서 출력을 해주고있다.
보는 바와 같이 비트연산 같이 복잡한 연산을 하지 않고도 우리는 손쉽게 문자를 출력할수 있게 된것이다.

* close를 할때는 상식적으로 나중에 연것부터 닫자!! 
  우리가 방에 들어갈때 두개의 문을 통과 해서 들어갔으면 나갈 때는 안쪽문부터 통과하는 것이 상식 아닌가?



* 아래와 같은 식으로 기능확장하는 것을 Decorator패턴이라고 하는데 나중에 좀더 자세히 알아보자
FileOutputStream out = new FileOutputStream("test1.data");


DataOutputStream out2 = new DataOutputStream(out);

댓글 없음:

댓글 쓰기