[C#] 파일 생성, 쓰기, 추가하는법

용용이·2023년 4월 16일
0

C#

목록 보기
1/3

C#으로 프로그램을 개발할 때 파일을 만들어 읽기, 쓰기, 삭제 등의 작업을 하는 경우가 있습니다.

환경 변수를 만들어 텍스트 파일로 저장해 놓고 다음 프로그램 실행시 참조를 한다든지, 실행 결과를 텍스트 파일로 저장한다든지 다양한 목적으로 닷넷 프로그램에서 파일을 만들어 사용하게 됩니다.

이번 글에서는 C#에서 간단하게 파일을 만들어 텍스트를 쓰는 방법과 기존 파일에 텍스트를 추가하는 방법에 대해 알아보겠습니다.

C#에서 파일을 만들고 쓰는 방법

C#에서 파일을 다루기 위해서는 using System.IO;를 먼저 선언해 줍니다.

-WriteAllText를 사용하면 텍스트가 파일의 한 라인으로 쓰여지게 됩니다.
-WriteAllLines를 사용하면 파일에 여러 행의 텍스트를 쓸 수가 있습니다.
-StreamWriter를 사용하면 좀 더 다양한 옵션으로 파일에 텍스트를 쓸 수가 있습니다.
(WriteLine 대신 Write를 쓰게되면 AppendAllText와 같은 기능을 하게 됩니다.)

※TIP : C#에서 파일을 만들 때 생성하는 파일의 경로(디렉터리 경로)가 올바르지 않을 때 오류가 발생하게 됩니다.
디렉터리의 존재 여부를 고민할 필요 없이 무조건 디렉터리를 만드는 로직은 선행해서 구현해 주는 것을 추천합니다.

파일 생성 및 문자열 추가 코드

using System.IO;

//파일을 만들고 문자열을 파일에 추가함
//폴더(디렉터리)가 없는 경우 폴더를 먼저 만들고 그 다음 파일을 만들고 문자열을 파일에 추가함
var filePath = @"C:\TempFolder\test1.txt";

var directory = Path.GetDirectoryName(filePath);    //filePath에 있는 디렉터리만 가져옴
Directory.CreateDirectory(directory);   //디렉터리를 만들어 줌

File.WriteAllText(filePath, "안녕하세요.");

//파일을 만들고 여러 행의 문자열을 파일에 추가함
var lines = new List<string>();
lines.Add("안녕하세요");
lines.Add("반가워요");

File.WriteAllLines(@"C:\TempFolder\test2.txt", lines);


//StreamWriter를 사용하여 파일을 만들고 여러 행의 문자열를 추가함
using (StreamWriter writer = File.CreateText(@"C:\TempFolder\test3.txt"))
{
    writer.WriteLine("안녕하세요.");
    writer.WriteLine("반가워요");
}

아래 화면은 위의 소스를 실행했을 때 만들어진 텍스트 파일과 파일에 쓰여진 내용입니다.

C#에서 기존 파일에 텍스트를 추가하는 방법

아래 로직은 기존 파일에 텍스트를 추가하는 방법에 대한 기술입니다.

-AppendAllText는 기존 텍스트의 끝에 새로운 텍스트를 추가하게 되고,
-AppendAllLines는 기존 텍스트의 라인 다음에 다시 새로운 행으로 추가하게 되고,
-FileStream과 StreamWriter 역시 기존 텍스트의 라인 다음에 새로운 행으로 텍스트가 추가됩니다.(WriteLine 대신 Write를 쓰게되면 AppendAllText와 같은 기능을 하게 됩니다.)

기존 파일에 텍스트 추가 코드

using System.IO;

// 기존 파일에 문자열 추가
File.AppendAllText(@"C:\TempFolder\test1.txt", "Hi nice to meet you");

// 기존 파일에 여러 행의 문자열 추가
var lines = new List<string>();
lines = new List<string>() { "Hi ", "Nice to meet you" };
File.AppendAllLines(@"C:\TempFolder\test2.txt", lines);

// StreamWriter를 사용하여 기존 파일에 여러 행의 문자열 추가
using (FileStream fs = new FileStream(@"C:\TempFolder\test3.txt", FileMode.Append, FileAccess.Write))
using (StreamWriter writer = new StreamWriter(fs))
{
    writer.WriteLine("Hi nice to meet you");
}

profile
Dragon

0개의 댓글