파일 읽기 및 쓰기
파일에서 데이터를 읽고 파일에 데이터를 쓰는 작업이 .NET의 핵심 개념입니다.
Tailwind Traders는 모든 개별 저장소 판매 파일의 총액을 새 파일에 쓴 다음, 해당 파일을 회사의 판매 시스템에 로드해야 합니다.
여기서는 File
클래스를 사용하여 파일을 읽고 쓰는 방법을 알아봅니다.
파일에서 데이터 읽기
File
클래스의 ReadAllText
메서드를 통해 파일을 읽습니다.
File.ReadAllText($"stores{Path.DirectorySeparatorChar}201{Path.DirectorySeparatorChar}sales.json");
ReadAllText
의 반환 개체는 문자열입니다.
{
"total": 22385.32
}
파일의 데이터 구문 분석
문자열 형식의 이 데이터는 별로 유용하지 않습니다. 여전히 문자일 뿐이지만 이제 읽을 수 있는 형식입니다. 이 데이터를 프로그래밍 방식으로 사용할 수 있는 형식으로 구문 분석하는 기능이 필요합니다.
.NET에는 Json.NET이라는 커뮤니티 라이브러리를 포함하여 JSON 파일을 구문 분석하는 다양한 방법이 있습니다.
NuGet을 사용해 프로젝트에 Json.NET 패키지를 추가할 수 있습니다.
dotnet add package Newtonsoft.Json
그런 다음, 클래스 파일의 맨 위에 using Newtonsoft.Json
을 추가합니다.
using Newtonsoft.Json;
그런 후 JsonConvert.DeserializeObject
메서드를 사용합니다.
var salesJson = File.ReadAllText($"stores{Path.DirectorySeparatorChar}201{Path.DirectorySeparatorChar}sales.json");
var salesData = JsonConvert.DeserializeObject<SalesTotal>(salesJson);
Console.WriteLine(salesData.Total);
class SalesTotal
{
public double Total { get; set; }
}
팁
다양한 형식의 파일이 있습니다. JSON 파일은 언어의 기본 제공 지원 때문에 가장 바람직한 작업 파일 형식입니다. .csv 파일, 고정 너비 파일 또는 다른 형식의 파일을 발견할 수도 있습니다. 이 경우 nuget.org에서 해당 파일 형식의 파서를 검색하는 것이 가장 좋습니다.
파일에 데이터 쓰기
이전 연습에서 파일을 작성하는 방법을 학습했습니다. 그때는 단지 빈 파일에 작성했을 뿐입니다. 파일에 데이터를 쓰려면 동일한 WriteAllText
메서드를 사용하되, 쓰려는 데이터를 전달하면 됩니다.
var data = JsonConvert.DeserializeObject<SalesTotal>(salesJson);
File.WriteAllText($"salesTotalDir{Path.DirectorySeparatorChar}totals.txt", data.Total.ToString());
// totals.txt
// 22385.32
파일에 데이터 추가
앞의 예제에서는 파일에 쓸 때마다 파일을 덮어씁니다. 이 동작을 원하지 않을 수도 있습니다. 데이터를 완전히 바꾸는 대신 파일에 추가하려고 합니다. 데이터에 File.AppendAllText
메서드를 추가할 수 있습니다. 기본적으로 File.AppendAllText
은(는) 파일이 아직 없는 경우 파일을 만듭니다.
var data = JsonConvert.DeserializeObject<SalesTotal>(salesJson);
File.AppendAllText($"salesTotalDir{Path.DirectorySeparatorChar}totals.txt", $"{data.Total}{Environment.NewLine}");
// totals.txt
// 22385.32
// 22385.32
팁
앞의 코드 예제에서 Environment.NewLine
은 값을 새 줄에 입력하도록 .NET에 지시합니다. 이 값을 전달하지 않으면 모든 숫자가 한 줄에 입력됩니다.
다음 연습에서는 모든 매출 파일을 읽고 .txt 파일에 총합계를 써서 Tailwind Traders의 매출 합계 프로젝트를 완료합니다. 그러면 회사의 상거래 시스템에서 파일을 처리할 수 있습니다.