ファイルに対する読み取りと書き込み

完了

ファイルからのデータの読み取りとファイルへのデータの書き込みは、.NET において重要な概念です。

Tailwind Traders では、各店舗のすべての売上ファイルの合計を、新しいファイルに書き込む必要があります。 次に、会社の販売システムにファイルを読み込みます。

ここでは、File クラスを使用して、ファイルに対する読み取りと書き込みを行う方法について学習します。

ファイルからデータを読み取る

ファイルを読み取るには、File クラスの ReadAllText メソッドを使用します。

File.ReadAllText($"stores{Path.DirectorySeparatorChar}201{Path.DirectorySeparatorChar}sales.json");

ReadAllText から返されるオブジェクトは文字列です。

{
  "total": 22385.32
}

ファイル内のデータを解析する

文字列形式のこのデータは、あまり役に立ちません。 これはまだ単なる文字ですが、今は判読できる形式になっています。 このデータを解析し、プログラムで使用できる形式にする機能が必要です。

.NET で JSON ファイルを解析するには、さまざまな方法があります。それには Json.NET と呼ばれるコミュニティ ライブラリが含まれます。

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 に対して値を独自の行に配置するように指示されています。 この値を渡さないと、すべての数値が同じ行にまとめられてしまいます。

次の演習では、すべての sales ファイルを読み取り、その総計を .txt ファイルに書き込んで、Tailwind Traders の売上合計プロジェクトを完成させます。 その後、会社のコマース システムでファイルを処理できます。