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

完了

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

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

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

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

  1. Program.cs ファイルで、反復処理を行って、foreach 関数から返された各ファイル名を "コンソール" 出力に書き込む FindFiles ループを削除します。 この変更により、salesFiles 変数は使用されなくなります。 ただし、後のレッスンでそれを再び使うので、ここではこのままにします。

  2. Program.cs ファイルで、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;
}