C#으로 프로그램을 개발할 때 파일을 만들어 읽기, 쓰기, 삭제 등의 작업을 해야 하는 경우가 있습니다.
환경 변수를 만들어 텍스트 파일로 저장해 놓고 다음 프로그램 실행 시 해당 파일을 읽어 참조를 한다든지, 실행 결과를 텍스트 파일로 저장 한다든지 다양한 목적으로 닷넷 프로그램에서 파일을 만들어 사용하게 됩니다.
이번 글에서는 C#에서 간단하게 텍스트 파일을 만들고(Create) 텍스트를 쓰는(Write) 방법과 기존 파일에 텍스트를 추가(Append)하는 방법에 대해 알아보겠습니다.
C#에서 파일을 생성하고 텍스트를 쓰기(Write) 하는 방법
C#에서 파일을 다루기 위해서는 using System.IO;를 먼저 선언해 주는 것이 코딩 작성에 편리합니다.
- WriteAllText를 사용하면 텍스트가 파일의 한 라인으로 쓰여지게 됩니다.
- WriteAllLines를 사용하면 파일에 여러 행의 텍스트를 쓸 수가 있습니다.
- StreamWriter를 사용하면 좀 더 다양한 옵션으로 파일에 텍스트를 쓸 수가 있습니다.(WriteLine 대신 Write를 쓰게되면 AppendAllText와 같은 기능을 하게 됩니다.)
//파일을 만들고 문자열을 파일에 추가함
File.WriteAllText(@“C:\Temp\jujun1.txt”, “안녕하세요. 느티나무 지식창고입니다.”);
//파일을 만들고 여러 행의 문자열을 파일에 추가함
var lines = new List<string>();
lines.Add(“안녕하세요”);
lines.Add(“느티나무 지식창고입니다.”);
// var lines = new List<string>() {“안녕하세요”, “느티나무 지식창고입니다.”};
File.WriteAllLines(@“C:\Temp\jujun2.txt”, lines);
//StreamWriter를 사용하여 파일을 만들고 여러 행의 문자열를 추가함
using (StreamWriter writer = File.CreateText(@“C:\Temp\jujun3.txt”))
{
writer.WriteLine(“안녕하세요.”);
writer.WriteLine(“느티나무 지식창고입니다.”);
writer.WriteLine(“만나서 반갑습니다.”);
}
|
▼ 아래 화면은 위의 C# 소스를 실행했을 때 만들어진 텍스트 파일과 파일에 쓰여진 내용입니다.
![C#에서 파일을 생성하고 텍스트를 쓰기(Write)와 추가(Append) 하는 방법](https://gseek.pe.kr/wp-content/uploads/2023/08/C에서-파일-쓰기.webp)
폴더(디렉터리)를 먼저 만든 다음 파일을 만들고 텍스트를 쓰는 방법
C#에서 파일을 만들 때 생성하는 파일의 경로(디렉터리 경로)가 올바르지 않을 때 오류가 발생하게 됩니다.
오류 내용: “System.IO.DirectoryNotFoundException: ‘…….’ 경로의 일부를 찾을 수 없습니다.“
DirectoryNotFoundException 오류는 저장하려는 파일의 경로가 현재 존재하지 않아 발생하는 예외 오류 입니다.
![System.IO.DirectoryNotFoundException 오류 해결 방법](https://gseek.pe.kr/wp-content/uploads/2023/08/C에서-파일을-쓸-때-경로가-올바르지-않는-경우-오류-처리.webp)
위와 같은 오류가 발생할 때는 디럭터리(폴더)를 먼저 만들어 주고 파일을 생성하면 오류 없이 처리됩니다.
디렉터리의 존재 여부를 고민할 필요 없이 무조건 디럭터리를 만드는 로직은 선행해서 구현해 주는 것을 추천합니다.
//폴더(디렉터리)가 없는 경우 폴더를 먼저 만들고 그 다음 파일을 만들고 문자열을 파일에 추가함
var filePath = @“C:\Temp\Temp2\jujun4.txt”;
//File.WriteAllText(filePath, “안녕하세요. 느티나무 지식창고입니다.”);
var directory = Path.GetDirectoryName(filePath); //filePath에 있는 디렉터리만 가져옴
Directory.CreateDirectory(directory); //디렉터리를 만들어 줌
File.WriteAllText(filePath, “안녕하세요. 느티나무 지식창고입니다.”);
|
C#에서 기존 파일에 텍스트를 추가(Append)하는 방법
▼ 아래 로직은 기존 파일에 텍스트를 추가하는 방법에 대한 기술입니다.
- AppendAllText는 기존 텍스트의 끝에 새로운 텍스트를 추가하게 되고,
- AppendAllLines는 기존 텍스트의 라인 다음에 다시 새로운 행으로 추가하게 되고,
- FileStream과 StreamWriter 역시 기존 텍스트의 라인 다음에 새로운 행으로 텍스트가 추가됩니다.(WriteLine 대신 Write를 쓰게되면 AppendAllText와 같은 기능을 하게 됩니다.)
// 기존 파일에 문자열 추가
File.AppendAllText(@“C:\Temp\jujun1.txt”, “jujun.tistory.com”);
// 기존 파일에 여러 행의 문자열 추가
lines = new List<string>() { “jujun.tistory.com”, “Have a good day” };
File.AppendAllLines(@“C:\Temp\jujun2.txt”, lines);
// StreamWriter를 사용하여 기존 파일에 여러 행의 문자열 추가
using (FileStream fs = new FileStream(@“C:\Temp\jujun3.txt”, FileMode.Append, FileAccess.Write))
using (StreamWriter writer = new StreamWriter(fs))
{
writer.WriteLine(“jujun.tistory.com.”);
writer.WriteLine(“Have a nice day.”);
}
|
※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
이 글이 도움이 되었기를 바랍니다. ^-^