스트림은 시냇물, 개울, 흐름이라는 뜻을 가지고 있다. 시냇물과 같이 출발지에서 목적지방향으로 흘러가는 데이터의 순차적인 흐름으로 이해하면 된다.
C#에서는 모든 입출력이 Stream이라는 추상클래스를 통해서 이뤄진다.
1. FileStream 과 Encoding
- 파일스트림 클래스는 파일 기반의 스트림을 처리하기 위해 스트림 추상 멤버들을 오버로드하여 구현하고 있다. 파일을 생서, 변경, 삭제등등을 할수 있는것이 바로 FileStream이다.
주요 속성으로는
1) FileMode : 파일의 존재여부를 파악.
2) FileAccess : 읽기 / 쓰기 여부 파악.
3) FileShare : 공유 여부를 결정
등이 있다.
스트림을 통해 전달된 데이터는 바이트(Byte)형태로 저장된다.
이 바이트들이 어떤 값을 가지고 있을거고 , 그 값을을 공통으로 갖기 표현하기 위하여 Encoding 클래스를 사용하게 된다.
이 클래스는 유니코드 문자 집합을 다루고 있다.
유니코드란 전세계 문자 인코딩 표준으로 전세계적으로 데이터를 교환할 수 있게 해주며, 다국어 문자 처리를 지원하기 위해 16비트 공간을 사용한다.
주요 속성으론 ASCIIEncoding, UnicodeEncodig, UTF7, 8, 32Encodig등이 있다.
2. StreamReader 와 StreamWriter
- 위의 FileStream은 바이트 단위로 데이터를 입출력하기 때문에 문자열 기반의 데이터를 처리하기에 쫌 불편하다. 이때 바로 스트림리더와 라이터 클래스를 사용한다.
StreamReader 클래스는 TextReader 추성 클래스로부터 파생된 클래스로 주요 메서드로는 Read, ReadBlock, ReadLine, ReadToEnd등이 있다.
StreamWriter 클래스는 TextWriter추상 클래스로부터 파생된 클래스로 Write, WriteLine 메서드등을 자주사용한다.