C# 파일과 스트림 처리 – FileStream 클래스 사용 방법
스트림 개념 및 사용법
스트림은 C#에서 파일 및 데이터를 읽고 쓰는 데 사용되는 중요한 개념입니다. 스트림은 데이터의 흐름을 나타내며, 입력 스트림은 데이터를 읽고 출력 스트림은 데이터를 쓰는 역할을 합니다. 스트림은 일련의 바이트로 구성되며, 파일, 메모리, 네트워크 등 다양한 소스와 연결될 수 있습니다.
스트림은 데이터를 작은 조각으로 나누어 처리하기 때문에 대용량 파일이나 네트워크 통신과 같은 작업에 효율적입니다. 또한, 스트림은 데이터를 순차적으로 처리하므로 메모리 사용량을 최소화하고 처리 속도를 향상시킬 수 있습니다.
FileStream 클래스
C#에서는 다양한 스트림 클래스를 제공하며, 그 중 하나인 FileStream 클래스는 파일에서 데이터를 읽고 쓰는 데 사용됩니다. FileStream 클래스는 파일과 연결된 스트림을 생성하여 파일과 직접적으로 접근하여 데이터를 주고받을 수 있습니다.
FileStream 클래스의 기능
FileStream 클래스는 다음과 같은 기능을 제공합니다:
– 파일을 순차적으로 읽거나 쓰기
– 임의로 접근하여 읽거나 쓰기
– 파일 경로, 파일 모드, 파일 권한 설정
FileStream 클래스의 활용
FileStream 클래스를 사용하여 파일에 데이터를 읽고 쓰는 방법을 익힐 수 있습니다. 파일을 읽을 때는 Read() 메서드를 사용하고, 파일에 쓸 때는 Write() 메서드를 사용합니다. 또한, Seek() 메서드를 사용하여 스트림의 위치를 이동할 수도 있습니다.
FileStream
클래스는 C#의 System.IO
네임스페이스에 정의되어 있으며, 파일에서 스트림을 읽고 쓰는 데 사용됩니다. FileStream
클래스 자체의 전체 소스 코드를 작성하는 것은 매우 길고 복잡할 수 있으며, 또한 FileStream
은 .NET Framework의 일부이기 때문에 이미 구현되어 있습니다. 하지만, FileStream
을 사용하여 파일을 읽고 쓰는 기본적인 예제 코드는 제공할 수 있습니다.
파일에서 읽기 예제
using System;
using System.IO;
class Program
{
static void Main()
{
// 파일에서 읽기 위한 FileStream 생성
using (FileStream fileStream = new FileStream("example.txt", FileMode.Open, FileAccess.Read))
{
byte[] buffer = new byte[1024]; // 버퍼 크기 설정
int bytesRead;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) > 0)
{
Console.WriteLine(Encoding.UTF8.GetString(buffer, 0, bytesRead));
}
}
}
}
파일에 쓰기 예제
using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
// 파일에 쓰기 위한 FileStream 생성
using (FileStream fileStream = new FileStream("example.txt", FileMode.Create, FileAccess.Write))
{
byte[] content = Encoding.UTF8.GetBytes("Hello, World!");
fileStream.Write(content, 0, content.Length);
}
}
}
이 코드들은 FileStream
을 사용하여 각각 파일에서 데이터를 읽고 파일에 데이터를 쓰는 방법을 보여줍니다. 파일을 열고, 데이터를 읽거나 쓰고, 파일을 닫는 과정이 포함되어 있습니다. 이 예제들은 FileStream
클래스의 기본적인 사용법을 보여주며, 실제 응용 프로그램에서는 더 복잡한 로직이 필요할 수 있습니다.
FileStream 클래스의 리소스 관리
스트림을 사용한 후에는 반드시 닫아야 합니다. 이는 리소스 누수를 방지하고 메모리를 효율적으로 관리하기 위함입니다. FileStream 클래스의 Close() 메서드를 호출하거나 using 문을 사용하여 자동으로 닫을 수 있습니다.
마무리
스트림은 C# 파일 및 데이터 처리에서 핵심적인 개념으로, 데이터의 흐름을 나타내며 읽기와 쓰기 작업을 효율적으로 처리합니다. FileStream 클래스를 사용하여 파일 입출력을 수행할 수 있으며, 다양한 작업에 활용될 수 있습니다.
스트림을 사용하여 파일 입출력, 네트워크 통신 등 다양한 작업을 수행해보세요.