C# - 파일 입력/출력: 초보자 가이드

안녕하세요, 미래의 코딩 슈퍼스타! 오늘 우리는 C#에서의 파일 입력/출력(File I/O) 세계로 흥미로운 여정을 떠납니다. 코드를 한 줄도 작성해본 적이 없어도 걱정하지 마세요 - 나는 당신의 친절한 가이드가 될 것이며, 우리는 함께 단계별로 이를 공략할 것입니다. 그러니 마음에 드는 음료를 한 잔 들고 편안하게 앉아, 시작해봅시다!

C# - File I/O

파일 입력/출력 이해

구체적인 내용에 뛰어들기 전에, 파일 입력/출력이 정확히 무엇을 의미하는지 이야기해보겠습니다. 상상해보세요, 당신이 일기장을 가지고 있다고요. 그 일기장에 글을 쓰는 것은 출력을 행하고 있고, 나중에 읽는 것은 입력입니다. 프로그래밍에서의 파일 입력/출력은 이와 비슷합니다 - 컴퓨터의 파일에서 읽고 쓰는 것입니다.

C# I/O 클래스

C#은 파일을 다루기 위한 훌륭한 도구 상자를 제공해줍니다. 이 도구들은 클래스 형태로 제공되며, 각각의 클래스는 특정한 능력을 가진 전문가들입니다. 우리의 파일 처리 친구들을 만나보겠습니다:

클래스 설명
File 기본 파일 연산을 위한 정적 클래스
FileInfo 파일을 생성, 복사, 삭제, 이동, 열기 위한 인스턴스 메서드를 제공
Directory 디렉토리와 서브디렉토리를 생성, 이동, 열기 위한 정적 클래스
DirectoryInfo Directory와 비슷하지만 인스턴스 메서드를 제공
Path 문자열 인스턴스에 대한 파일이나 디렉토리 경로 정보를 처리

이것이 많아 보일 수도 있지만, 지금은 가장 중요한 것에 집중하겠습니다.

File 클래스: 스위스 아ーノ이 knife

File 클래스는 파일 연산의 스위스 아ーノ이 knife입니다. 모든 일을 할 수 있습니다! 그것을 실제로 보겠습니다:

using System;
using System.IO;

class Program
{
static void Main()
{
// 파일에 쓰기
File.WriteAllText("hello.txt", "안녕하세요, 세상!");

// 파일에서 읽기
string content = File.ReadAllText("hello.txt");
Console.WriteLine(content);
}
}

이 예제에서 우리는 "안녕하세요, 세상!"을 "hello.txt" 파일에 쓰고, 그 다음에 읽어들입니다. 이렇게 간단합니다! File 클래스는 모든 배후 작업을 위해 우리를 돕습니다.

FileStream 클래스: 더 많은 제어

occasionally, you need more control over your file operations. That's where FileStream comes in. It's like having a direct pipeline to your file. Let's see how it works:

using System;
using System.IO;

class Program
{
static void Main()
{
string path = "myfile.txt";

// FileStream을 사용하여 파일에 쓰기
using (FileStream fs = File.Create(path))
{
byte[] info = new System.Text.UTF8Encoding(true).GetBytes("Hello, FileStream!");
fs.Write(info, 0, info.Length);
}

// FileStream을 사용하여 파일에서 읽기
using (FileStream fs = File.OpenRead(path))
{
byte[] b = new byte[1024];
UTF8Encoding temp = new UTF8Encoding(true);
while (fs.Read(b,0,b.Length) > 0)
{
Console.WriteLine(temp.GetString(b));
}
}
}
}

이 것은 조금 더 복잡해 보일 수도 있지만, 걱정하지 마세요! 우리는 "Hello, FileStream!"을 파일에 쓰고 그 다음에 읽어들입니다. using 문은 우리가 그것을 사용한 후 FileStream를 제대로 닫는 것을 보장합니다 - 물을 씻은 후 수를 껐는 것과 같습니다!

C#에서 고급 파일 연산

이제 기본적인 내용을 다 배웠으니, 더 고급적인 연산을 살펴보겠습니다:

파일이 존재하는지 확인

파일을 다루기 전에 파일이 존재하는지 확인하는 것이 좋습니다:

string path = @"C:\Users\YourName\Documents\myfile.txt";
if (File.Exists(path))
{
Console.WriteLine("파일이 존재합니다!");
}
else
{
Console.WriteLine("파일이 존재하지 않습니다.");
}

파일 복사

파일을 복사하고 싶다면, C#은 이를 지원합니다:

string sourceFile = @"C:\Users\YourName\Documents\original.txt";
string destinationFile = @"C:\Users\YourName\Documents\copy.txt";

File.Copy(sourceFile, destinationFile, true);

여기서 true는 목적지 파일이 이미 존재하면 덮어쓰겠다는 의미입니다.

파일 이동

파일을 이동하는 것도 쉽습니다:

string sourceFile = @"C:\Users\YourName\Documents\fileToMove.txt";
string destinationFile = @"C:\Users\YourName\Desktop\movedFile.txt";

File.Move(sourceFile, destinationFile);

파일 삭제

파일을 삭제하려면:

string fileToDelete = @"C:\Users\YourName\Documents\unwantedFile.txt";
File.Delete(fileToDelete);

이 작업은 신중하게 사용해야 합니다. C#에서는 휴지통이 없습니다!

마무리

축하합니다! 지금까지 C#에서 파일 입력/출력의 세계로 첫 걸음을 냈습니다. 우리는 많은 내용을 다루었고, 기본적인 읽고 쓰기에서 더 고급적인 연산까지 이르렀습니다. 연습이 완벽을 만드는 것을 기억하며, 이 개념들을 실천해보세요.

제가 가르치는 연간 동안, 가장 좋은 학습 방법은 실제로 하며 배우는 것이라고 발견했습니다. 그러므로 이제 간단한 메모 앱을 만들어 파일에 메모를 저장하고 읽어들이는 것을 도전해보세요. 이는 우리가 배운 모든 것을 실천하는 훌륭한 방법입니다!

그리고 언제나 기억하세요: 프로그래밍에서도, 인생에서도 실수는 괜찮습니다. 이는 우리가 배우고 성장하는 방법입니다. 그러니 계속 코딩하며 탐험하고, 가장 중요한 것은 즐겁게 하세요!

다음에 다시 만날 때까지, 행복한 코딩을 기원합니다!

Credits: Image by storyset