스트림(Stream)은 모든 스트림의 추상 기본 클래스로, 바이트 시퀀스에 대한 일반적인 뷰를 제공합니다. 스트림 객체는 읽기(Reading), 쓰기(Writing), 탐색(Seeking)이라는 세 가지 기본 작업을 수행할 수 있습니다. 또한 스트림은 재설정(reset)이 가능하기 때문에 성능 향상에도 도움이 됩니다.
C#에서는 MemoryStream 클래스를 사용하면 바이트 배열을 아주 간단하게 메모리 스트림으로 변환할 수 있습니다. MemoryStream 생성자에 바이트 배열을 인자로 전달하기만 하면 됩니다.
MemoryStream stream = new MemoryStream(byteArray);
예제 코드
다음 예제에서는 값 1, 2, 3, 4, 5를 담고 있는 바이트 배열을 준비한 뒤, 이를 MemoryStream으로 변환하고 BinaryReader를 사용하여 각 바이트 값을 순서대로 읽어 콘솔에 출력합니다.
using System;
using System.IO;
namespace DemoApplication {
class Program {
static void Main(string[] args) {
byte[] byteArray = new byte[5] {1, 2, 3, 4, 5 };
using (MemoryStream stream = new MemoryStream(byteArray)) {
using (BinaryReader reader = new BinaryReader(stream)) {
for (int i = 0; i < byteArray.Length; i++) {
byte result = reader.ReadByte();
Console.WriteLine(result);
}
}
}
Console.ReadLine();
}
}
}코드 설명
- byteArray: 변환 대상이 되는 바이트 배열입니다.
- MemoryStream: 바이트 배열을 받아 메모리 상에서 읽고 쓸 수 있는 스트림을 생성합니다.
- BinaryReader: 스트림에서 원시 데이터 형식(여기서는 byte)을 편리하게 읽을 수 있게 해줍니다.
- using 문: 스트림과 리더가 사용이 끝난 후 자동으로 해제되도록 보장하여 리소스 누수를 방지합니다.
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
1 2 3 4 5