2024. 9. 20. 20:38ㆍc#
C# 파일 입출력: 파일 읽기 및 쓰기 / 파일과 디렉터리 관리
C#에서 파일을 다루는 것은 매우 중요하며, 데이터를 저장하고 불러오거나 파일을 생성하는 작업은 대부분의 애플리케이션에서 자주 사용됩니다.
C#에서는 StreamReader, StreamWriter와 같은 클래스를 통해 파일을 읽고 쓸 수 있으며, File 클래스와 Directory 클래스를 통해 파일과 디렉터리 관리도 가능합니다.
이번 포스팅에서는 파일 입출력과 파일 및 디렉터리 관리에 대해 다뤄보겠습니다.
1. 파일 읽기 (StreamReader)
파일을 읽는 가장 일반적인 방법 중 하나는 StreamReader 클래스를 사용하는 것입니다.
이 클래스는 파일을 읽기 위해 사용되며, 텍스트 파일을 한 줄씩 또는 전체를 읽어들일 수 있습니다.
StreamReader로 파일 읽기 예시
using System;
using System.IO;
class FileReadExample
{
public static void Main()
{
// 파일 경로
string filePath = @"C:\example\file.txt";
// StreamReader를 사용하여 파일 읽기
using (StreamReader reader = new StreamReader(filePath))
{
string line;
while ((line = reader.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
}
}
위 코드에서는 StreamReader를 사용해 파일을 한 줄씩 읽고, 파일 끝에 도달할 때까지 while문을 통해 출력합니다.
2. 파일 쓰기 (StreamWriter)
파일에 데이터를 쓰는 가장 일반적인 방법은 StreamWriter 클래스를 사용하는 것입니다.
이 클래스를 통해 파일에 텍스트를 쓸 수 있으며, 파일이 없을 경우 새 파일을 생성할 수 있습니다.
StreamWriter로 파일 쓰기 예시
using System;
using System.IO;
class FileWriteExample
{
public static void Main()
{
// 파일 경로
string filePath = @"C:\example\file.txt";
// StreamWriter를 사용하여 파일 쓰기
using (StreamWriter writer = new StreamWriter(filePath, true)) // 'true'는 파일 끝에 추가한다는 뜻
{
writer.WriteLine("새로운 라인 추가");
writer.WriteLine("파일 쓰기 예제");
}
}
}
StreamWriter를 통해 파일에 텍스트를 쓸 수 있으며, true 값을 전달하여 파일의 기존 내용을 덮어쓰지 않고 새로운 데이터를 추가할 수 있습니다.
3. 파일 관리(File 클래스)
C#에서는 File 클래스와 Directory 클래스를 사용하여 파일과 디렉터리를 쉽게 관리할 수 있습니다.
이를 통해 파일을 생성, 삭제, 이동, 복사하거나 디렉터리를 생성, 삭제, 탐색할 수 있습니다.
File 클래스는 파일의 다양한 작업을 수행할 수 있는 메서드를 제공합니다.
파일 존재 여부 확인
if (File.Exists(filePath))
{
Console.WriteLine("파일이 존재합니다.");
}
else
{
Console.WriteLine("파일이 없습니다.");
}
파일 복사
File.Copy(@"C:\example\source.txt", @"C:\example\copy.txt");
파일 삭제
File.Delete(@"C:\example\file.txt");
4. 디렉터리 관리 (Directory 클래스)
Directory 클래스는 디렉터리를 생성하거나 삭제하는 등의 작업을 할 수 있습니다.
디렉터리 생성
string directoryPath = @"C:\example\newfolder";
if (!Directory.Exists(directoryPath))
{
Directory.CreateDirectory(directoryPath);
Console.WriteLine("디렉터리가 생성되었습니다.");
}
디렉터리 삭제
Directory.Delete(directoryPath, true); // 'true'는 하위 폴더 및 파일도 함께 삭제
Console.WriteLine("디렉터리가 삭제되었습니다.");
디렉터리 내 파일 리스트 가져오기
string[] files = Directory.GetFiles(@"C:\example");
foreach (string file in files)
{
Console.WriteLine(file);
}
5. 예외 처리
파일을 읽거나 쓸 때, 또는 디렉터리를 관리할 때 예외가 발생할 수 있습니다.
따라서 적절한 try-catch 구문을 통해 오류를 처리하는 것이 중요합니다.
파일 입출력 예외 처리 예시
try
{
using (StreamReader reader = new StreamReader(@"C:\nonexistent\file.txt"))
{
string line;
while ((line = reader.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
}
catch (FileNotFoundException ex)
{
Console.WriteLine("파일을 찾을 수 없습니다: " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("오류 발생: " + ex.Message);
}
이 코드는 파일이 존재하지 않을 경우 발생하는 FileNotFoundException을 처리하고, 그 외의 일반적인 예외도 처리할 수 있게 구성되어 있습니다.
파일 입출력과 파일 및 디렉터리 관리는 C#에서 중요한 부분을 차지합니다.
StreamReader와 StreamWriter를 통해 파일을 읽고 쓸 수 있으며, File과 Directory 클래스를 사용해 파일과 디렉터리를 관리할 수 있습니다.
효율적으로 파일을 관리하기 위해서는 항상 예외 처리를 염두에 두는 것이 중요합니다.
'c#' 카테고리의 다른 글
c# 람다(Lambda) 표현식 (0) | 2024.09.25 |
---|---|
c# JSON, XML 데이터 처리 (0) | 2024.09.20 |
c# try-catch, finally, throw (0) | 2024.09.18 |
c# 인터페이스(interface)와 추상 클래스(abstract)의 차이점 (1) | 2024.09.18 |
C# 추상(abstract) 클래스와 메서드 (0) | 2024.09.18 |