C#의 스트림: StreamReader 및 StreamWriter [예]

⚡ 스마트 요약

AC# 스트림은 애플리케이션과 파일 사이에 있는 계층으로, 데이터를 작은 단위로 읽거나 쓸 수 있게 해줍니다. 여기서는 StreamReader와 Stream을 사용하는 방법을 배우게 됩니다.Writer 예시와 주요 유형을 포함한 작업.

  • 🌊 무엇이다 : 스트림은 애플리케이션과 파일 사이의 중간 계층입니다.
  • ???? 스트림리더: StreamReader는 파일에서 텍스트를 한 줄씩 또는 한 덩어리씩 읽습니다.
  • 흐름Writer: 흐름Writer 스트림을 통해 파일에 텍스트를 씁니다.
  • 🧩 스트림 유형: FileStream, MemoryStream 및 BufferedStream은 모두 Stream 클래스에서 파생됩니다.
  • 🤖 AI 도움말: GitHub Copilot과 같은 AI 도구는 C# 스트림 코드를 즉시 생성합니다.

C# 스트림 리더 및 Writer

C# 스트림이란 무엇입니까?

C# 파일 작업에서 일반적으로 스트림은 파일을 읽고 쓰는 데 사용됩니다. 스트림은 애플리케이션과 파일 사이에 생성된 추가 계층입니다. 스트림은 파일에 대한 원활한 읽기 및 쓰기 작업을 보장하는 데 사용됩니다.

스트림은 일반적으로 대용량 파일에서 데이터를 읽을 때 사용됩니다. 스트림을 사용하면 대용량 파일의 데이터가 작은 덩어리로 나뉘어 스트림으로 전송됩니다. 그런 다음 이러한 데이터 덩어리를 애플리케이션에서 읽을 수 있습니다.

작은 덩어리로 나누는 이유는 큰 파일을 한 번에 읽는 성능에 영향을 미치기 때문입니다. 예를 들어 100MB 파일의 데이터를 한 번에 읽으면 애플리케이션이 중단되고 불안정해질 수 있습니다. 가장 좋은 접근 방식은 스트림을 사용하여 파일을 관리 가능한 덩어리로 나누는 것입니다.

따라서 파일에 쓰기 작업을 수행할 때, 쓸 데이터는 먼저 스트림에 쓰여집니다. 그런 다음 스트림에서 데이터가 파일에 쓰여집니다. 읽기 작업도 마찬가지입니다. 읽기 작업에서 데이터는 먼저 파일에서 스트림으로 전송됩니다. 그런 다음 스트림을 통해 애플리케이션에서 데이터가 읽힙니다. 스트림을 사용하여 읽고 쓸 수 있는 방법의 예를 살펴보겠습니다.

C#의 스트림 종류

C#의 모든 스트림 클래스는 절대 클래스에서 파생됩니다.tract Stream 클래스 System.IO 네임스페이스를 사용합니다. 각 유형은 서로 다른 데이터 소스를 대상으로 하지만 읽기 및 쓰기 메서드는 동일합니다. 가장 일반적으로 사용되는 스트림은 아래에 나열되어 있습니다.

  • 파일스트림 디스크의 파일에서 1바이트 또는 1블록 단위로 읽고 씁니다.
  • 메모리스트림 데이터를 파일 대신 메모리에 저장하므로 임시 버퍼로 사용하기에 유용합니다.
  • BufferedStream 속도가 느린 디스크 또는 네트워크 작업 횟수를 줄이기 위해 다른 스트림을 래핑합니다.
  • 네트워크 스트림 네트워크 소켓을 통해 데이터를 송수신합니다.

C#은 텍스트 작업을 위해 다음과 같은 기능을 제공합니다. StreamReader StreamWriter 스트림을 감싸는 헬퍼 클래스는 다음 섹션에서 다룹니다.

스트림 리더

스트림 리더는 스트림을 사용하여 파일에서 데이터를 읽는 데 사용됩니다. 파일의 데이터가 먼저 스트림으로 읽혀집니다. 그런 다음 애플리케이션은 스트림에서 데이터를 읽습니다.

이 예에서는 D 드라이브에 example.txt라는 파일이 있다고 가정합니다. 파일은 간단한 텍스트 파일이며 아래와 같이 2줄로 구성됩니다.

  • Guru99 – .Net
  • Guru99 -C#

이 예에서는 간단한 콘솔 애플리케이션을 만들고 파일 스트림을 사용하여 작업하겠습니다.

파일에서 데이터를 읽는 데 스트림을 사용하는 방법에 대한 예를 살펴보겠습니다. program.cs 파일에 아래 코드를 입력하세요.

스트림 리더

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
    String path = @"D:\Example.txt";

    using (StreamReader sr = File.OpenText(path))
    {
     String s = "";

     while ((s = sr.ReadLine()) != null)
     {
      Console.WriteLine(s);
     }
    }
   Console.ReadKey();
  }
 }
}

Code 설명:-

  1. 먼저 스트림 리더 개체를 선언합니다. 스트림 판독기 개체는 C#에서 파일에서 애플리케이션으로의 스트림을 정의하는 데 사용됩니다. 파일에서 데이터를 읽을 때마다 데이터가 파일에서 스트림으로 푸시됩니다. 파일.OpenText 읽기 전용 모드에서 "Example.txt" 파일을 여는 데 사용됩니다. 그런 다음 파일에 대한 처리기가 스트림 판독기 개체로 전송됩니다.
  2. 다음으로 파일에서 모든 데이터를 읽는 데 사용되는 임시 변수 's'를 정의합니다.
  3. 그런 다음 스트림 리더 메서드 ReadLine을 사용하여 스트림 버퍼에서 각 줄을 읽습니다. 이 작업을 수행할 때 조작, 각 줄은 먼저 파일에서 버퍼로 전송됩니다. 그런 다음 문자열 줄이 버퍼에서 변수 's'로 전송됩니다. 그런 다음 문자열 's'의 내용을 콘솔에 씁니다.

위의 코드가 설정되고 프로젝트가 다음을 사용하여 실행되면 비주얼 스튜디오, 아래 출력을 얻게 됩니다.

산출:-

스트림 리더

출력에서 Stream Reader가 파일의 두 줄을 모두 읽는 것을 볼 수 있습니다. 마지막으로 스트림에서 읽은 문자열 줄이 콘솔로 전송되었습니다.

흐름 Writer

스트림 기록기는 스트림을 사용하여 파일에 데이터를 쓰는 데 사용됩니다. 애플리케이션의 데이터는 먼저 스트림에 기록됩니다. 그 후 스트림은 데이터를 파일에 씁니다. 파일에서 데이터를 쓰기 위해 스트림을 사용하는 방법에 대한 예를 살펴보겠습니다. program.cs 파일에 아래 코드를 입력하세요.

흐름 Writer

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
    String path = @"D:\Example.txt";
    
    using (StreamWriter sr = File.AppendText(path))
    {
     sr.WriteLine("Guru99 - ASP.Net");
     sr.Close();

     Console.WriteLine(File.ReadAllText(path));
    }
    Console.ReadKey();
  }
 }
}

Code 설명:-

  1. 먼저 스트림 기록기 개체를 선언합니다. 스트림 기록기 개체는 C#에서 스트림을 정의하는 데 사용됩니다. 그런 다음 스트림은 애플리케이션의 데이터를 파일에 쓰는 데 사용됩니다. 데이터를 써야 할 때마다 데이터가 애플리케이션에서 스트림으로 푸시됩니다. File.AppendText 명령은 추가 모드에서 "Example.txt" 파일을 여는 데 사용됩니다. 그런 다음 파일에 대한 처리기가 스트림 기록기 개체로 전송됩니다.
  2. 우리는 스트림 쓰기 메서드인 Writeline을 사용하여 "라는 줄을 쓰고 있습니다.Guru스트림에 "99 – ASP.Net"을 추가합니다. 그러면 스트림에서 해당 줄이 파일에 기록됩니다.
  3. 그런 다음 파일에 쓴 후 스트림 작성기를 닫습니다. 일반적으로 쓰기 목적으로 파일이 더 이상 필요하지 않은 경우 파일 핸들러를 닫는 것이 좋습니다.
  4. 마지막으로 파일 내용을 다시 읽고 콘솔 로그에 씁니다. 해당 행이 파일에 기록되었는지 확인하는 것입니다.

위의 코드를 설정하고 Visual Studio를 사용하여 프로젝트를 실행하면 아래 출력이 표시됩니다.

산출:-

흐름 Writer

출력 결과를 보면 해당 줄이 “Guru"99 – ASP.Net"이 파일에 성공적으로 추가되었습니다. 콘솔에서 세 줄의 텍스트를 모두 확인할 수 있습니다.

자주 묻는 질문

스트림은 애플리케이션과 파일 사이의 중간 계층입니다. 스트림은 대용량 파일을 작은 덩어리로 나누어 전체 파일을 메모리에 로드하지 않고도 데이터를 읽거나 쓸 수 있도록 합니다.

StreamReader는 스트림을 통해 파일에서 텍스트 데이터를 읽습니다. File.OpenText StreamReader를 반환하며, ReadLine 메서드는 파일을 한 줄씩 읽습니다.

흐름Writer 스트림을 통해 텍스트 데이터를 파일에 씁니다. File.AppendText는 스트림을 반환합니다.Writer그리고 WriteLine 메서드는 각 줄을 파일로 보냅니다.

일반적인 스트림으로는 파일용 FileStream과 메모리 내 데이터용 MemoryStream이 있습니다. Buffer버퍼링을 위한 edStream과 소켓을 위한 NetworkStream은 모두 절대값에서 파생됩니다.tract 스트림 클래스.

FileStream은 파일에 원시 바이트를 읽고 쓰는 반면, StreamReader는 스트림을 래핑하여 텍스트를 문자 및 줄 단위로 읽습니다. 텍스트 파일의 경우 StreamReader를 사용하는 것이 더 편리합니다.

GitHub Copilot 자동 완성 기능, StreamReader 및 Stream과 같은 AI 비서Writer 코드에 해제를 위한 using 블록을 추가하고, 간단한 주석에서 파일 읽기 루프를 생성합니다.

예. AI 기반 도구는 스트림 읽기 및 쓰기 메서드를 생성하고, 대용량 파일에 대한 버퍼링을 제안하며, 스트림이 안전하게 닫히도록 using 문을 추가합니다.

`using` 문은 오류가 발생하더라도 블록이 끝나면 스트림을 자동으로 닫고 해제합니다. 이렇게 하면 파일 핸들이 해제되어 리소스 누수를 방지할 수 있습니다.

이 게시물을 요약하면 다음과 같습니다.