Dosyalardaki verileri okuma ve dosyalara veri yazma
Dosyalardaki verileri okuma ve dosyalara veri yazma, .NET'in temel kavramlarındandır.
Tailwind Traders'ın tüm mağaza satış dosyalarının toplamını yeni bir dosyaya yazması ve ardından dosyayı şirketin satış sistemine yüklemesi gerekiyor.
Burada, dosyaları okumak ve dosyalara yazmak için sınıfını File kullanmayı öğreneceksiniz.
Dosyalardan verileri okuma
Dosyalar ReadAllText sınıfında File metodu aracılığıyla okunur.
File.ReadAllText($"stores{Path.DirectorySeparatorChar}201{Path.DirectorySeparatorChar}sales.json");
ReadAllText bir dize döndürür.
{
"total": 22385.32
}
Dosyalardaki verileri ayrıştırma
Dize biçimindeki veriler pek işinize yaramaz. Okuyabileceğiniz bir biçimde olsa da sadece karakterlerden ibarettir. Bu verileri program aracılığıyla kullanabileceğiniz bir biçime ayrıştırabilmek istiyorsunuz.
.NET ile JSON dosyalarını ayrıştırmanın, Json.NET olarak bilinen bir topluluk kitaplığı da dahil olmak üzere birçok yolu vardır.
NuGet kullanarak Json.NET paketini projenize ekleyebilirsiniz:
dotnet add package Newtonsoft.Json
Ardından sınıf dosyanızın en üstüne ekleyin using Newtonsoft.Json :
using Newtonsoft.Json;
Ve yöntemini kullanın 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; }
}
İpucu
Birçok farklı dosya biçimi vardır. JSON dosyaları yerleşik dil desteği nedeniyle en popüler olan biçimlerden biridir. .csv veya sabit genişlikli gibi farklı dosyalarla da karşılaşabilirsiniz. Bu durumda ilgili dosya türüne ait ayrıştırıcı için nuget.org sitesine bakmanız önerilir.
Dosyalara veri yazma
Önceki alıştırmada nasıl dosya yazabileceğinizi öğrendinsiniz; Sadece boş bir tane yazdın. Bir dosyaya veri yazmak için yine WriteAllText yöntemini kullanabilirsiniz. Ancak bu kez yazmak istediğiniz verileri geçirin.
var data = JsonConvert.DeserializeObject<SalesTotal>(salesJson);
File.WriteAllText($"salesTotalDir{Path.DirectorySeparatorChar}totals.txt", data.Total.ToString());
// totals.txt
// 22385.32
Dosyalara veri ekleme
Önceki örnekte her yazma işleminde dosyanın üzerine yazmış olursunuz. Bazen bunu istemezsiniz. Verileri tamamen değiştirmek yerine dosyaya eklemek istiyorsunuz.
File.AppendAllText yöntemiyle veri ekleyebilirsiniz. Varsayılan olarak, File.AppendAllText zaten yoksa dosyayı oluşturur.
var data = JsonConvert.DeserializeObject<SalesTotal>(salesJson);
File.AppendAllText($"salesTotalDir{Path.DirectorySeparatorChar}totals.txt", $"{data.Total}{Environment.NewLine}");
// totals.txt
// 22385.32
// 22385.32
İpucu
Yukarıdaki kod örneğinde, Environment.NewLine .NET'in değeri kendi satırına koymasını ister. Bu değeri geçirmezseniz tüm sayılar birlikte aynı satıra yazılır.
Sonraki alıştırmada tüm satış dosyalarını okuyup genel toplamı bir .txt dosyasına yazarak Tailwind Traders için oluşturduğunuz satış toplamı projesini tamamlayacaksınız. Şirketin ticaret sistemi daha sonra dosyayı işleyebilecek.