.NET'te dosya yollarıyla çalışma
.NET,dosya sistemi yollarıyla çalışmaya yönelik yerleşik bir mekanizmaya sahiptir.
Önceki alıştırmada ayrıştıracak çok fazla klasör yoktu. Çok sayıda dosya ve klasör içeren bir dosya sisteminiz varsa, yolları el ile oluşturmak yorucu olabilir. Neyse ki.NET, dosya yollarının işlenmesini kolaylaştırmak için bazı yerleşik sabitler ve yardımcı program işlevleri sağlar.
Burada ad alanı System.IO içindeki bazı sabitler ve yardımcı program işlevleri System.Environment ve türü hakkında bilgi edinerek programınızı daha akıllı ve daha dayanıklı hale getirebilirsiniz.
Geçerli dizini belirleme
Bazen, programınızın hangi dizinde veya yolda çalıştırılması gerektiğini bilmezsiniz. Programınızın geçerli dizini kullanmasını istediğinizi ancak yolu bilmediğinizi varsayalım.
.NET, Directory.GetCurrentDirectory metodu aracılığıyla geçerli dizinin tam yolunu kullanıma sunar.
Console.WriteLine(Directory.GetCurrentDirectory());
Yukarıdaki kodu aşağıdaki yapıda 201 klasöründen çalıştırırsanız, Directory.GetCurrentDirectory() ifadesi stores\201 olarak döner.
📂 stores
📂 201
Özel dizinlerle çalışma
.NET her yerde çalışır: Windows, macOS, Linux ve hatta iOS ve Android gibi mobil işletim sistemlerinde. Her işletim sistemi özel sistem klasörleri (örn. kullanıcıya özgü dosyalar için ayrılmış bir giriş dizini) veya bir masaüstü dizini ya da geçici dosyaları depolamak için bir dizin) kavramına sahip olabilir veya olmayabilir.
Bu tür özel dizinler her işletim sistemi için farklılık gösterir. Her işletim sisteminin dizin yapısını hatırlamaya çalışmak ve geçerli işletim sistemine göre anahtarlar gerçekleştirmek zahmetli olacaktır.
System.Environment.SpecialFolder sabit listesi, özel sistem klasörlerinin yollarını almak için gerekli sabitleri belirtir.
Aşağıdaki kod, kod Linux üzerinde çalışıyor olsa bile herhangi bir işletim sistemi için Windows Belgelerim klasörünün veya kullanıcının HOME dizininin yolunu döndürür:
string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
Yollarla çalışma
Yollar, .NET'in özellikle bunlarla çalışmak için adlı Path bir sınıf içermesi için o kadar sık karşılaşılan bir konudur.
Path sınıfı .NET ad alanında System.IO bulunur ve yüklenmesi gerekmez.
Özel yol karakterleri
Dizin düzeylerini ayırmak için kullanılan karakterler, işletim sistemine göre değişir.
Örneğin, Windows ters eğik çizgi (stores\201) ve macOS eğik çizgi (stores/201) kullanır.
Doğru karakteri kullanmanıza yardımcı olmak için Path sınıfı DirectorySeparatorChar alanını içerir.
.NET, el ile yol oluşturmanız gerektiğinde bu alanı otomatik olarak işletim sistemi için geçerli olan ayırıcı karaktere yorumlar.
Console.WriteLine($"stores{Path.DirectorySeparatorChar}201");
// returns:
// stores\201 on Windows
//
// stores/201 on macOS
Yolları birleştirme
Path sınıfı, temelde birer dize olan dosya ve klasör yolları kavramıyla çalışır. sınıfını Path kullanarak belirli işletim sistemleri için otomatik olarak doğru yollar oluşturabilirsiniz.
Örneğin, stores/201 klasörünün yolunu almak istiyorsanız, bunu yapmak için işlevini kullanabilirsiniz Path.Combine .
Console.WriteLine(Path.Combine("stores","201")); // outputs: stores/201
Programınız birçok farklı işletim sisteminde çalışıyor olabileceğinden, sabit kodlama dizeleri yerine veya Path.Combine sınıfını kullanmanız Path.DirectorySeparatorChar gerektiğini unutmayın. sınıfı, Path üzerinde çalıştığı işletim sistemi için yolları her zaman doğru biçimlendirmektedir.
İpucu
Sınıf Path , işlerin gerçekten var olup olmadığıyla ilgilenmez. Yollar fiziksel değil kavramsaldır ve sınıf sizin için dizeler oluşturup ayrıştırıyor.
Dosya adı uzantılarını belirleme
sınıfı Path size bir dosya adının uzantısını da söyleyebilir. Dosyanız varsa ve bunun bir JSON dosyası olup olmadığını öğrenmek istiyorsanız işlevini kullanabilirsiniz Path.GetExtension .
Console.WriteLine(Path.GetExtension("sales.json")); // outputs: .json
Bir dosya veya yol hakkında bilmeniz gereken her şeyi elde etme
Path sınıfı, farklı şeyler yapan birçok farklı yönteme sahiptir. Bir dizin veya dosya hakkında en ayrıntılı bilgilere DirectoryInfo veya FileInfo sınıflarını kullanarak erişebilirsiniz.
string fileName = $"stores{Path.DirectorySeparatorChar}201{Path.DirectorySeparatorChar}sales{Path.DirectorySeparatorChar}sales.json";
FileInfo info = new FileInfo(fileName);
Console.WriteLine($"Full Name: {info.FullName}{Environment.NewLine}Directory: {info.Directory}{Environment.NewLine}Extension: {info.Extension}{Environment.NewLine}Create Date: {info.CreationTime}"); // And many more
, Pathve sınıflarında DirectoryInfobirçok daha kullanışlı özellik ve FileInfo yardımcı program yöntemi vardır, ancak bu temel kavramlar en sık kullanma olasılığınız olan kavramlardır. Bir sonraki alıştırmada yolları oluşturacak ve .json dosyalarını belirleyeceksiniz.