Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
05-16 04:51
관리 메뉴

nomad-programmer

[Programming/C#] StreamWriter / StreamReader (텍스트 파일 처리) 본문

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

*/
Comments