Alıştırma - Dosya sistemiyle çalışma
.NET ile dosyalar ve klasörler hakkındaki bilgilere ulaşabilir ve bu bilgileri döndürebilirsiniz.
Tailwind Traders'ın dünyanın dört bir yanında faaliyet gösteren fiziksel mağazaları var. Her gece her mağaza, o güne ait tüm satışların toplamını içeren sales.json adlı bir dosya oluşturur. Bu dosyalar, mağaza kimliğiyle adlı klasörler halinde düzenlenir.
Not
Bu modülde yerel geliştirme için .NET CLI (Komut Satırı Arabirimi) ve Visual Studio Code kullanılır. Bu modülü tamamladıktan sonra Visual Studio (Windows) veya Mac için Visual Studio (macOS) gibi bir geliştirme ortamı kullanarak öğrendiğiniz kavramları uygulayabilir veya Visual Studio Code'da (Windows, Linux ve macOS) geliştirmeye devam edebilirsiniz.
Bu modülde .NET 8.0 SDK kullanılır. Tercih ettiğiniz komut terminalinde aşağıdaki komutu çalıştırarak .NET 8.0'ın yüklü olduğundan emin olun:
dotnet --list-sdks
Aşağıdaki örneğe benzer bir çıkış görüntülenir:
6.0.317 [C:\Program Files\dotnet\sdk]
7.0.401 [C:\Program Files\dotnet\sdk]
8.0.100 [C:\Program Files\dotnet\sdk]
ile 8
başlayan bir sürümün listelendiğinden emin olun. Hiçbiri listelenmiyorsa veya komut bulunamazsa en son .NET 8.0 SDK'sını yükleyin.
Projeyi kopyalama
Bu alıştırmada, dizinde ve alt dizinlerinde sales.json adlı dosyaları arayan bir .NET programı yazacaksınız.
Sizin için zaten bir başlangıç projesi oluşturulmuştur. Visual Studio Code'daki tümleşik terminali kullanarak bunu klonlarsınız.
Visual Studio Code'u açın.
Ana menüde Terminali Görüntüle'yi>seçerek bir terminal penceresi açın.
(İsteğe bağlı) Terminal penceresinde, dosyaları kopyalamak istediğiniz dizine (gibi
c:\MyProjects
) geçin.Terminal penceresinde aşağıdaki komutu çalıştırarak başlangıç projesini kopyalayın ve kopyalanan projeye gidin:
git clone https://github.com/MicrosoftDocs/mslearn-dotnet-files && cd mslearn-dotnet-files
Yeni bir .NET Konsol projesi oluşturmak için aşağıdaki komutu çalıştırın:
dotnet new console -f net8.0 -n mslearn-dotnet-files -o .
Yeni .NET projesini Visual Studio Code'un aynı örneğinde açmak için aşağıdaki komutu çalıştırın:
code -a .
İpucu
Bu noktada Visual Studio Code, projeyi derlemek ve çalıştırmak için gerekli varlıkların eksik olduğunu size sorabilir.
Ünlem işareti olan üçgeni seçin ve ardından Visual Studio Code'un projeyi çalıştırmasına ve hatalarını ayıklamasına izin veren dosyaları eklemek için Terminali Yeniden Başlat'ı seçin.
Gezgin penceresinde, mslearn-dotnet-files altında stores klasörünü ve içindeki numaralandırılmış klasörlerin her birini genişletin.
sales.json dosyalarını bulma
Aşağıdaki görevler, projenin tüm klasörlerindeki mslearn-dotnet-files
tüm sales.json dosyalarını bulmak için bir program oluşturur.
System.IO ad alanını dahil etme
Gezgin penceresinde dosyayı seçerek
Program.cs
düzenleyicide açın.ve
Program.cs
ad alanlarını içeri aktarmak için dosyanın ilk satırınaSystem.IO
System.Collections.Generic
aşağıdaki kodu yapıştırın:using System.IO; using System.Collections.Generic;
Not
.NET 6'dan başlayarak, önceki koddaki iki deyim, özellik grubu yoluyla ImplcitUsings
otomatik olarak yeni bir projeye eklenir. Yeni bir konsol projesi oluştururken bayrağını -f net8.0
belirttiğimiz için bunlar örtük olarak eklenir. Ancak, eski bir projeyle çalışıyorsanız, bunların dosyaya eklenmesi Program.cs
gerekir ve bunları dosyada bırakmanız bu projeyi etkilemez.
sales.json dosyalarını bulmak için bir işlev yazma
FindFiles
parametresini alan folderName
adlı yeni bir işlev oluşturun.
Console.WriteLine("Hello, World!"); satırını aşağıdaki kodla değiştirin:
IEnumerable<string> FindFiles(string folderName) { List<string> salesFiles = new List<string>(); var foundFiles = Directory.EnumerateFiles(folderName, "*", SearchOption.AllDirectories); foreach (var file in foundFiles) { // The file name will contain the full path, so only check the end of it if (file.EndsWith("sales.json")) { salesFiles.Add(file); } } return salesFiles; }
İşlevi çağırmak
using
FindFiles
için deyimlerinin altına aşağıdaki kodu ekleyin. Bu kod, dosyaları aramak için konum olarak stores klasör adını geçirir.var salesFiles = FindFiles("stores"); foreach (var file in salesFiles) { Console.WriteLine(file); }
Dosyayı kaydetmek için Ctrl+S
Program.cs
.
Programı çalıştırma
Programı çalıştırmak için terminal penceresine aşağıdaki komutu girin:
dotnet run
Program aşağıdaki çıkışı göstermelidir:
stores/sales.json stores/201/sales.json stores/202/sales.json stores/203/sales.json stores/204/sales.json
Mükemmel! Dizindeki stores
tüm klasörlerde gezinen ve bulunan tüm sales.json dosyalarını listeleyen bir komut satırı programını başarıyla yazdınız.
Bu örnekte stores dizininin yolu oldukça basitti ve programın çalışma dizinindeydi. Bir sonraki ünitede sınıfını kullanarak işletim sistemleri arasında çalışan karmaşık yapılar oluşturma hakkında Path
bilgi edineceksiniz.
Takıldınız mı?
Programı çalıştırırken sorun yaşıyorsanız, dosyanın tamamlanmış kodu aşağıdadır Program.cs
. Dosyanızın Program.cs
içeriğini şu kodla değiştirin:
var salesFiles = FindFiles("stores");
foreach (var file in salesFiles)
{
Console.WriteLine(file);
}
IEnumerable<string> FindFiles(string folderName)
{
List<string> salesFiles = new List<string>();
var foundFiles = Directory.EnumerateFiles(folderName, "*", SearchOption.AllDirectories);
foreach (var file in foundFiles)
{
// The file name will contain the full path, so only check the end of it
if (file.EndsWith("sales.json"))
{
salesFiles.Add(file);
}
}
return salesFiles;
}