ファイルに対する読み取りと書き込み
ファイルからのデータの読み取りとファイルへのデータの書き込みは、.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 の売上合計プロジェクトを完成させます。 その後、会社のコマース システムでファイルを処理できます。