演習 - ファイルとディレクトリを作成する

完了

.NET の File クラスと Directory クラスを使用すると、新しいファイルやディレクトリをプログラムで作成できます。

これまで、任意のフォルダー構造を読み取って .json 拡張子を持つファイルを検索できる堅牢なコマンド ライン アプリケーションを .NET で作成してきました。 次は、これらのファイルを読み取り、その中のデータを要約する必要があります。 その後、salesTotals という新しいディレクトリの新しいファイルに合計を書き込みます。

この演習では、最終的に売上合計が照合される salesTotalDir ディレクトリと totals.txt ファイルを作成します。

SalesTotals ディレクトリを作成する

  1. Program.cs ファイルで、反復処理を行って、FindFiles 関数から返された各ファイル名を "コンソール" 出力に書き込む foreach ループを削除します。 この変更により、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. ファイル エクスプローラーで [更新] アイコンを選択します。

    Screenshot of the Refresh icon in the Files explorer of the Cloud Shell editor.

完了までもう少しです。 最後の手順では、sales ファイルを読み取り、合計を加算し、総計を新しい "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;
}