이전 글에서 Stream 클래스와 Using에 대해 알아보았으며 StreamWriter에 대해 알아보았습니다. 이번에는 StreamReader와 이진 파일 읽기와 쓰기의 BinaryWriter 및 BinaryReader에 대해 알아보겠습니다.
1. StreamReader
StreamReader는 텍스트 형식의 파일을 불러올 때 사용하는 클래스입니다. 사용 방법은 StreamWriter와 유사하며 다음과 같습니다.
StreamReader 이름 = new StreamReader(파일명, 형식)
형식은 이전 글에서 확인한 FileStream의 FileMode와 동일하게 사용합니다.
2. BinaryWriter와 BinaryReader
StreamWriter와 StreamReader는 텍스트 형식의 파일을 쓰거나 읽을 때 사용합니다. 텍스트 형식으로 파일을 저장하면 파일 내용을 쉽게 확인할 수 있어서 보안상 취약한 점이 있으며, 데이터를 저장하거나 읽어올 때 반드시 Byte 형식으로 변환해야 하는 번거로움이 있습니다.
BinaryWriter는 파일을 저장할 때 이진 파일 형식으로 저장을 할 수 있습니다. 사용 방법은 앞에서 확인한 StreamWriter와 StreamReader 사용 방법과 유사합니다.
BinaryWriter 이름 = new BinaryWriter(파일명, 형식)
BinaryReader 이름 = new BinaryReader(파일명, 형식)
3. FileStream 함께 사용
StreamWriter / StreamReader와 BinaryWriter / BinaryReader는 단독으로 사용할 수 있으나 FileStream과 함께 사용할 수도 있습니다.
FileStream과 함께 사용하게 되면 파일을 여는 형식(FileAccess)을 지정할 수 있으며 형식에 다음과 같이 지정할 수 있습니다.
FileAccess | 설명 |
Read | 읽기 전용 파일 |
ReadWrite | 읽기 및 쓰기 가능한 파일 |
Write | 쓰기 전용 파일 |
4. 예제로 확인
StreamReader 사용 방법을 예제를 통해 확인해 보겠습니다. Visual Studio를 실행하고 C# 콘솔 애플리케이션을 실행합니다.
이전 글에서 StreamWriter로 작성한 텍스트 파일(test.txt)을 읽어오는 예제를 아래와 같이 작성합니다.
using System;
using System.IO;
namespace FRead
{
class Program
{
static void Main(string[] args)
{
using(StreamReader sr = new StreamReader(@"c:\test.txt"))
{
float value = float.Parse(sr.ReadLine());
string str = sr.ReadLine();
Console.WriteLine("{0} {1}", value, str);
}
}
}
}
화면에 3.14 Hello World!가 출력되는 것을 보실 수 있습니다. 위의 예제에서 StreamReader를 using과 함께 사용하였으므로 sr.close()를 생략하여도 무방합니다. using 없이 StreamReader를 사용한 경우에는 반드시 마지막에 sr.close()를 입력하여 파일을 닫아주어야 합니다.
BinaryWriter에 대한 예제를 다음과 같이 작성합니다.
using System;
using System.IO;
namespace Ex_BinaryWriter
{
class Program
{
static void Main(string[] args)
{
float value = 3.14f;
string str = "Hello World!";
using (BinaryWriter bw = new BinaryWriter(new FileStream(@"c:\\test.txt", FileMode.Create)))
{
bw.Write(value);
bw.Write(str);
}
}
}
}
이번에는 FileStream과 BinaryWriter와 함께 쓰면서 파일을 새로 만드는 모드로 설정하였습니다.
위의 코드를 실행하시면 test.txt라는 파일이 C드라이브에 생성되는데 파일을 열어보시면 앞에서 StreamWriter로 생성한 파일과는 달리 내용을 완벽히 알아보실 수 없을 것입니다.
'Programming > C#' 카테고리의 다른 글
C# 파일 입출력 - Stream 클래스 (0) | 2021.11.27 |
---|---|
C# 데이터 형식 - Object & 박싱, 언박싱 (0) | 2021.10.18 |
C# 컬렉션 알아보기 - Hashtable & 메서드 (0) | 2021.10.15 |
C# 컬렉션 알아보기 - Stack & 메서드 (0) | 2021.10.15 |
C# 컬렉션 알아보기 - Queue & 메서드 (0) | 2021.10.15 |