학습
C# 파일 입출력 기초
C# 파일 입출력 기초 — 초급
파일 입출력 기초
1. 도입 (왜 배워야 하는가)
파일 입출력(File I/O)은 컴퓨터 프로그래밍에서 매우 중요한 개념입니다. 프로그램은 데이터를 처리하고, 결과를 사용자에게 보여주거나 파일로 저장하는 경우가 많습니다. 예를 들어, 쇼핑몰에서 사용자가 장바구니에 담은 상품 정보를 파일에 저장하거나, 게임에서 플레이어의 진행 상황을 기록하는 것이 모두 파일 입출력에 해당합니다.
이 개념을 모르면 프로그램이 종료되면 데이터가 사라지거나, 사용자와의 상호작용이 단절되는 문제가 발생할 수 있습니다. 따라서 파일 입출력을 이해하고 활용할 수 있어야만 실무에서 유용한 프로그램을 작성할 수 있습니다.
2. 핵심 개념 설명
파일 입출력(File I/O)
- 정의: 프로그램이 파일과 데이터를 주고받는 과정입니다.
- 비유: 파일은 서랍과 같고, 파일 입출력은 서랍에서 물건을 꺼내거나 넣는 것과 같습니다. 서랍에 물건을 넣으면 나중에 다시 꺼낼 수 있는 것처럼, 파일에 데이터를 저장하면 언제든지 다시 읽을 수 있습니다.
- 정의: 데이터의 흐름으로, 파일과의 데이터 전송을 관리합니다.
- 비유: 스트림은 수도관과 같아서, 데이터가 흐르는 길을 제공합니다.
스트림(Stream)
관련 용어 정리
| 용어 | 설명 |
|---|---|
| 파일 | 데이터를 저장하는 장소 |
| 읽기 | 파일에서 데이터를 가져오는 작업 |
| 쓰기 | 데이터를 파일에 저장하는 작업 |
| 스트림 | 데이터의 흐름을 관리하는 객체 |
3. 기본 코드 예제
아래는 C#에서 파일에 데이터를 쓰고 읽는 아주 기본적인 예제입니다.
using System;
using System.IO;
class Program
{
static void Main()
{
// 파일에 문자열 쓰기
string filePath = "example.txt"; // 파일 경로
File.WriteAllText(filePath, "안녕하세요, 파일 입출력!"); // 파일에 문자열 작성
// 파일에서 문자열 읽기
string content = File.ReadAllText(filePath); // 파일 내용 읽기
Console.WriteLine(content); // 읽은 내용 출력
}
}
실행 결과
안녕하세요, 파일 입출력!
코드 한 줄씩 동작 설명
using System;- System 네임스페이스를 사용하여 기본 클래스에 접근합니다.using System.IO;- 파일 입출력을 위한 IO 네임스페이스를 사용합니다.string filePath = "example.txt";- 파일의 경로를 정의합니다.File.WriteAllText(filePath, "안녕하세요, 파일 입출력!");- 지정한 파일에 문자열을 작성합니다. 만약 파일이 없으면 새로 생성합니다.string content = File.ReadAllText(filePath);- 파일의 내용을 읽어옵니다.Console.WriteLine(content);- 읽어온 내용을 콘솔에 출력합니다.- 잘못된 코드:
- 올바른 코드:
- 설명: 잘못된 경로를 지정하면 파일을 찾을 수 없어 오류가 발생합니다. 파일 경로를 정확히 확인해야 합니다.
- 잘못된 코드:
- 올바른 코드:
- 설명:
WriteAllText는 기존 파일 내용을 덮어쓰므로, 데이터 손실이 발생할 수 있습니다.AppendAllText를 사용해 데이터를 추가하는 것이 좋습니다. - 파일 입출력은 데이터를 저장하고 읽어오는 데 필수적인 개념입니다.
- 스트림을 통해 파일과 데이터를 주고받을 수 있습니다.
- 파일을 읽고 쓸 때 정확한 경로를 사용하는 것이 중요합니다.
- 데이터 덮어쓰기를 피하기 위해
AppendAllText를 활용합시다. - 파일 예외 처리 (File I/O 예외를 처리하는 방법)
- CSV 파일 읽기 및 쓰기 (구조화된 데이터 다루기)
- JSON 파일 입출력 (데이터 전송 및 저장의 표준 형식)
4. 실전 활용 예제
예제 1: 사용자 입력 저장하기
쇼핑몰에서 사용자가 장바구니에 담은 상품 정보를 파일에 저장하는 경우입니다.
using System;
using System.IO;
class ShoppingCart
{
static void Main()
{
string filePath = "cart.txt";
Console.WriteLine("장바구니에 담을 상품명을 입력하세요:");
string item = Console.ReadLine();
File.AppendAllText(filePath, item + Environment.NewLine); // 파일에 추가
Console.WriteLine("상품이 장바구니에 추가되었습니다.");
}
}
예제 2: 로그 파일 생성하기
프로그램의 실행 로그를 파일에 기록하는 경우입니다.
using System;
using System.IO;
class Logger
{
static void Main()
{
string logPath = "log.txt";
string message = "프로그램이 실행되었습니다: " + DateTime.Now;
File.AppendAllText(logPath, message + Environment.NewLine); // 로그 추가
Console.WriteLine("로그가 기록되었습니다.");
}
}
5. 흔한 실수와 주의사항
실수 1: 파일 경로 오류
File.ReadAllText("wrong_path.txt");
File.ReadAllText("example.txt");
실수 2: 파일 덮어쓰기
File.WriteAllText("example.txt", "새로운 내용"); // 기존 내용이 삭제됨
File.AppendAllText("example.txt", "새로운 내용" + Environment.NewLine); // 내용 추가