[C#] 텍스트 파일 읽기

2023. 2. 6. 19:26프로그래밍

728x90

 

File 클래스는 C#에서 텍스트 파일을 읽는 두 가지 static 메서드를 제공합니다. 

File.ReadAllText() 메서드는 텍스트 파일을 열고 파일의 모든 텍스트를 문자열로 읽은 다음 파일을 닫습니다.

 

다음 코드 조각은 텍스트 파일을 문자열로 읽어 들입니다:

// Read entire text file content in one string  
string text = File.ReadAllText(textFile);  
Console.WriteLine(text); 
 

File.ReadAllLines() 메서드는 텍스트 파일을 열고 파일의 모든 줄을 문자열 배열로 읽은 다음 파일을 닫습니다. 

 

다음 코드 조각은 텍스트 파일을 문자열 배열로 읽어 들입니다:

// Read a text file line by line.  
string[] lines = File.ReadAllLines(textFile);  
  
foreach (string line in lines)  
Console.WriteLine(line);
 

텍스트 파일을 읽는 또 다른 방법은 TextReader를 구현하고 특정 인코딩의 바이트 스트림에서 문자를 읽는 StreamReader 클래스를 사용하는 것입니다. 

 

StreamReader의 ReadLine 메서드는 한 번에 한 줄씩 읽어 들입니다:

// Read file using StreamReader. Reads file line by line    
using(StreamReader file = new StreamReader(textFile)) {  
 int counter = 0;  
 string ln;  
  
 while ((ln = file.ReadLine()) != null) {  
  Console.WriteLine(ln);  
  counter++;  
 }  
 file.Close();  
 Console.WriteLine($ "File has {counter} lines.");  
} 
 

아래 전체 코드 샘플은 위에서 설명한 방법을 사용하여 텍스트 파일을 읽고 해당 내용을 콘솔에 표시합니다. 

 

이 코드 테스트는 시스템에서 텍스트 파일을 찾고(혹은 텍스트가 포함된 파일을 만들고) "textFile" 변수를 .txt 파일의 전체 경로로 변경 시킵니다:

using System;  
using System.IO;  
  
namespace ReadATextFile {  
 class Program {  
  // Default folder    
  static readonly string rootFolder = @ "C:\Temp\Data\";    
  //Default file. MAKE SURE TO CHANGE THIS LOCATION AND FILE PATH TO YOUR FILE   
  static readonly string textFile = @ "C:\Temp\Data\Authors.txt";  
  
  static void Main(string[] args) {  
   if (File.Exists(textFile)) {  
    // Read entire text file content in one string    
    string text = File.ReadAllText(textFile);  
    Console.WriteLine(text);  
   }  
  
   if (File.Exists(textFile)) {  
    // Read a text file line by line.  
    string[] lines = File.ReadAllLines(textFile);  
    foreach(string line in lines)  
    Console.WriteLine(line);  
   }  
  
   if (File.Exists(textFile)) {  
    // Read file using StreamReader. Reads file line by line  
    using(StreamReader file = new StreamReader(textFile)) {  
     int counter = 0;  
     string ln;  
  
     while ((ln = file.ReadLine()) != null) {  
      Console.WriteLine(ln);  
      counter++;  
     }  
     file.Close();  
     Console.WriteLine($ "File has {counter} lines.");  
    }  
   }  
  
   Console.ReadKey();  
  }  
 }  
} 
 

이상.

 

728x90