Dosya sistemiyle çalışma
- 3 dakika
.NET, ad alanında System.IO bulabileceğiniz dosya sistemiyle çalışmaya yönelik yerleşik türler içerir.
Burada, dosyaları ve dizinleri bulmak üzere bir dosya sistemini okumak için C# kullanarak içinde System.IO kullanılabilen türler hakkında bilgi edineceksiniz.
Senaryo
Büyük perakendeciler genellikle dosyalara veri yazar, böylece daha sonra toplu olarak işlenebilir.
Tailwind Traders mağazalarının her biri satış toplamlarını bir dosyaya yazıyor ve bu dosyayı merkeze gönderiyor. Bu dosyaları kullanmak için şirketin dosya sistemiyle çalışabilen bir toplu işlem oluşturması gerekir.
System.IO ad alanını dahil etme
System.IO ad alanı, dosya ve dizinlerle etkileşim kurmanızı sağlayan yerleşik türler içerir. Örneğin, arama ölçütlerine getset ve dosya ve dizinlerin özelliklerine göre dosya ve dizin koleksiyonlarını alabilirsiniz. Veri akışlarını ve dosyalarını zaman uyumlu ve zaman uyumsuz olarak okumak ve yazmak için ad alanı türlerini de kullanabilirsiniz System.IO .
Şimdilik Directory ad alanında bulunan System.IO sınıfını kullanarak dizinlerle çalışmak için bilmeniz gerekenlere odaklanacağız. Dizin sınıfı dizinler ve alt dizinler oluşturmak, taşımak ve numaralandırmak için statik yöntemleri kullanıma sunar.
Tüm dizinleri listeleme
Directory sınıfı genellikle dizinleri listelemek (veya listelemek) için kullanılır. Örneğin Tailwind Traders dosya yapısının stores adlı bir kök klasörü vardır. Bu klasörde mağaza numarasına göre düzenlenmiş alt klasörler bulunur ve bu klasörlerin içinde sales-total ve inventory dosyaları bulunur. Yapı şu örneğe benzer:
📂 stores
📄 sales.json
📄 totals.txt
📂 201
📄 sales.json
📄 salestotals.json
📄 inventory.txt
📂 202
Üst düzey dizinlerin adlarını okumak ve listelemek için işlevini kullanın Directory.EnumerateDirectories .
IEnumerable<string> listOfDirectories = Directory.EnumerateDirectories("stores");
foreach (var dir in listOfDirectories) {
Console.WriteLine(dir);
}
// Outputs:
// stores/201
// stores/202
Belirli bir dizindeki dosyaları listeleme
Bir dizindeki tüm dosyaların adlarını listelemek için Directory.EnumerateFiles işlevini kullanabilirsiniz.
IEnumerable<string> files = Directory.EnumerateFiles("stores");
foreach (var file in files)
{
Console.WriteLine(file);
}
// Outputs:
// stores/totals.txt
// stores/sales.json
Bir dizinde ve onun alt dizinlerinde bulunan tüm içeriği listeleme
Hem Directory.EnumerateDirectories hem de Directory.EnumerateFiles işlevi, dosyaların ve dizinlerin eşleşmesi gereken bir arama deseni belirtmek için kullanılabilecek bir parametre alan bir aşırı yüklemeye sahiptir.
Bu işlevler ayrıca belirli bir klasörün ve tüm alt klasörlerinin yinelemeli olarak gezilip gezilmeyeceğini belirtmek için bir parametre alan başka bir aşırı yüklemeye de sahiptir.
// Find all *.txt files in the stores folder and its subfolders
IEnumerable<string> allFilesInAllFolders = Directory.EnumerateFiles("stores", "*.txt", SearchOption.AllDirectories);
foreach (var file in allFilesInAllFolders)
{
Console.WriteLine(file);
}
// Outputs:
// stores/totals.txt
// stores/201/inventory.txt
Sonraki alıştırmada sınıfını Directory kullanarak Tailwind Traders'ın ana mağazaları dizinini dinamik olarak okuyarak tüm sales.json dosyalarını bulacaksınız.