연습 - 파일 및 디렉터리 만들기

완료됨

.NET의 File 클래스와 Directory 클래스를 사용하면 프로그래밍 방식으로 새 파일 및 디렉터리를 만들 수 있습니다.

지금까지 폴더 구조를 읽어 .json 확장명을 가진 파일을 찾을 수 있는 강력한 명령줄 애플리케이션을 .NET에서 만들었습니다. 이제 해당 파일을 읽어 포함된 데이터를 요약한 다음 salesTotals라는 새 디렉터리에 있는 새 파일에 합계를 써야 합니다.

이 연습에서는 salesTotalDir 디렉터리와 매출 합계가 정렬된 totals.txt 파일을 만듭니다.

SalesTotals 디렉터리 만들기

  1. FindFiles 함수에서 반환된 각 파일 이름을 콘솔 출력에 쓰는 반복형 foreach 루프를 Program.cs 파일에서 제거합니다. 이 변경으로 인해 salesFiles 변수가 사용되지 않습니다. 그러나 이 변수는 다음 단원에서 사용할 예정이므로 여기서는 일단 그대로 두겠습니다.

  2. Program.cs 파일에서 salesTotalDir 디렉터리 경로를 포함하는 salesTotalDir이라는 변수를 만듭니다.

    var currentDirectory = Directory.GetCurrentDirectory();
    var storesDirectory = Path.Combine(currentDirectory, "stores");
    
    var salesTotalDir = Path.Combine(currentDirectory, "salesTotalDir");
    
    var salesFiles = FindFiles(storesDirectory);
    
  3. Program.cs 파일에서 디렉터리를 만드는 코드를 추가합니다.

    var currentDirectory = Directory.GetCurrentDirectory();
    var storesDirectory = Path.Combine(currentDirectory, "stores");
    
    var salesTotalDir = Path.Combine(currentDirectory, "salesTotalDir");
    Directory.CreateDirectory(salesTotalDir);   // Add this line of code
    
    var salesFiles = FindFiles(storesDirectory);   
    

totals.txt 파일 작성

  1. Program.cs 파일에서 새로 만든 salesTotalDir 디렉터리 내에 totals.txt라는 빈 파일을 만드는 코드를 추가합니다. 지금은 파일의 내용에 빈 문자열을 사용합니다.

    var currentDirectory = Directory.GetCurrentDirectory();
    var storesDirectory = Path.Combine(currentDirectory, "stores");
    
    var salesTotalDir = Path.Combine(currentDirectory, "salesTotalDir");
    Directory.CreateDirectory(salesTotalDir);
    
    var salesFiles = FindFiles(storesDirectory);
    
    File.WriteAllText(Path.Combine(salesTotalDir, "totals.txt"), String.Empty);
    
  2. Ctrl+S / Cmd+S를 눌러 파일을 저장합니다.

  3. 터미널 프롬프트에서 다음 코드를 실행하여 프로그램을 실행합니다.

    dotnet run
    
  4. 파일 탐색기에서 새로 고침 아이콘을 선택합니다.

    Cloud Shell 편집기의 파일 탐색기에 있는 새로 고침 아이콘의 스크린샷

거의 완료되었습니다. 마지막 단계는 매출 파일을 읽고 합계를 계산한 다음, 새 totals.txt 파일에 총합계를 쓰는 것입니다. 다음으로 파일 내 데이터를 읽고 구문 분석하는 방법을 알아봅니다.

처리하기 어려운 부분이 있나요?

이 연습을 수행하는 동안 처리하기 어려운 부분이 있었다면 여기서 이 시점까지 완성된 전체 코드를 참조하세요.

var currentDirectory = Directory.GetCurrentDirectory();
var storesDirectory = Path.Combine(currentDirectory, "stores");

var salesTotalDir = Path.Combine(currentDirectory, "salesTotalDir");
Directory.CreateDirectory(salesTotalDir);     
var salesFiles = FindFiles(storesDirectory);

File.WriteAllText(Path.Combine(salesTotalDir, "totals.txt"), String.Empty);

IEnumerable<string> FindFiles(string folderName)
{
    List<string> salesFiles = new List<string>();

    var foundFiles = Directory.EnumerateFiles(folderName, "*", SearchOption.AllDirectories);

    foreach (var file in foundFiles)
    {
        var extension = Path.GetExtension(file);
        if (extension == ".json")
        {
            salesFiles.Add(file);
        }
    }

    return salesFiles;
}