演習 - ファイルとディレクトリを作成する
.NET の File クラスと Directory クラスを使用すると、新しいファイルやディレクトリをプログラムで作成できます。
これまで、任意のフォルダー構造を読み取って .json 拡張子を持つファイルを検索できる堅牢なコマンド ライン アプリケーションを .NET で作成してきました。 ここで、これらのファイルを読み取ってデータを集計し、 salesTotals という新しいディレクトリ内の新しいファイルに合計を書き込む必要があります。
この演習では、 salesTotalDir ディレクトリと、売上合計が照合される totals.txt ファイルを作成します。
SalesTotals ディレクトリを作成する
Program.csファイルで、反復処理を行って、foreach関数から返された各ファイル名を "コンソール" 出力に書き込むFindFilesループを削除します。 この変更により、salesFiles変数は使用されなくなります。 ただし、後のレッスンでそれを再び使うので、ここではこのままにします。Program.csファイルで、salesTotalDirディレクトリへのパスを保持する という変数を作成します。var currentDirectory = Directory.GetCurrentDirectory(); var storesDirectory = Path.Combine(currentDirectory, "stores"); var salesTotalDir = Path.Combine(currentDirectory, "salesTotalDir"); var salesFiles = FindFiles(storesDirectory);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 ファイルを書き込む
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);Ctrl キーを押しながら S キー / Cmd + S キーを押してファイルを保存します。
ターミナル プロンプトから次のコードを実行して、プログラムを実行します。
dotnet runファイル エクスプローラーで [更新] アイコンを選択します。
完了までもう少しです。 最後の手順では、売上ファイルを読み取り、合計を合計し、総計を新しい 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;
}