Programming/C#
[Programming/C#] StreamWriter / StreamReader (텍스트 파일 처리)
scii
2020. 9. 28. 18:21
텍스트 파일은 구조는 간단하지만 활용도가 높은 파일 형식이다. ASCII 인코딩에서는 각 바이트가 문자 하나를 나타내기 때문에 바이트 오더의 문제에서도 벗어날 수 있고, 이로 인해 플랫폼에 관계없이 생성하고 읽을 수 있다. 뿐만 아니라 프로그램이 생성한 파일의 내용을 편집기로 열면 사람이 바로 읽을 수도 있다.
.NET 프레임워크는 텍스트 파일을 쓰고 읽을 수 있도록 StreamWriter/StreamReader를 제공한다. 이 두 클래스들은 Stream의 도우미 클래스이다. Stream이 NetworkStream이라면 네트워크를 통해 텍스트 데이터를 내보내거나 읽어들이고, FileStream이라면 파일로 텍스트 데이터를 내보내거나 이로부터 읽어들인다.
StreamWriter
StreamWriter sw = new StreamWriter(new FileStream("a.dat", FileMode.Create));
sw.Write(32);
sw.WriteLine("Hello World!");
sw.WriteLine(3.14);
sw.Close();
StreamReader
StreamReader sr = new StreamReader(new FileStream("a.dat", FileMode.Open));
while (sr.EndOfStream == false)
{
Console.WriteLine(sr.ReadLine());
}
sr.Close();
StreamWriter/StreamReader의 사용 예제 프로그램
using System;
using System.IO;
namespace CSharpExample
{
internal class MainApp
{
static int Main(string[] args)
{
StreamWriter sw = new StreamWriter(new FileStream("a.txt", FileMode.Create));
sw.WriteLine(int.MaxValue);
sw.WriteLine("Hello World!");
sw.WriteLine(uint.MaxValue);
sw.WriteLine("안녕하세요.");
sw.WriteLine(double.MaxValue);
sw.Close();
StreamReader sr = new StreamReader(new FileStream("a.txt", FileMode.Open));
Console.WriteLine($"File Size: {sr.BaseStream.Length} bytes");
while (!sr.EndOfStream)
{
Console.WriteLine(sr.ReadLine());
}
sr.Close();
return 0;
}
}
}
/* 결과
File Size: 79 bytes
2147483647
Hello World!
4294967295
안녕하세요.
1.79769313486232E+308
*/