Anasayfa » .NET Basit Çözümler – Bir Dizindeki Tüm Dosyaları ve Alt Dizinlerin Sayısını Almak

Makaleyi Paylaş

Blog

.NET Basit Çözümler – Bir Dizindeki Tüm Dosyaları ve Alt Dizinlerin Sayısını Almak

Merhabalar;
Sahada yaptığımız bir otomasyon uygulamasında etiket formatlarını yazdırdıktan sonra yazdırılan her etiketin prn dosyasınıda kayıt altına almamız gerekti.

Fakat belirli adete ulaştıklarında da bu formatları başka bir yere göndermeliydik, bu nedenle dizin içerisindeki dosya sayılarını almamız gerekiyordu. Kaynaklar sıkıntılı olduğu için az kaynakla hızlı bir çözüm gerekliydi, çünkü günlük binlerce yeni dosya kaydından bahsediyoruz.

Bunun için aşağıdaki gibi farklı çözümler var fakat kaynak harcamakta üstlerine yok.

var rootDir = Directory.GetDirectories(@"C:\Etiketler");

foreach (var dir in rootDir)
{
    if (Directory.GetDirectories(dir).Length > 0)
    {

    }
}

Bende aşağıdaki bir çözümler az kaynak çok iş diyebileceğimiz bir yöntem buldum.


Directory.GetFiles(WorkingDir, "*", SearchOption.AllDirectories);

Daha da az kaynak istiyorum; Bunun için çözümde aşağıda

int result = Directory.EnumerateFiles(WorkingDir, "*", SearchOption.AllDirectories).Count();

Makaleyi Paylaş

IT alanında 16 sene önce donanım ile başlayan tecrübem, network ve sonrasında iş analizi, yazılım geliştirme ve proje yöneticiliği alanlarında devam etmiştir. Endüstriyel yazılımlar, sahadan veri toplama ve analizleri, otomatik etiketleme ve barkod sistemleri, otomatik tartım ve robotik konularında tecrübe sahibiyim. Sanayi 4.0 kapsamında imalat sanayinin dijital dönüşümünde çok fazla projenin hayata geçmesini sağladım. Open Source projelerle uzun süre ilgilendim, analiz ve implementasyonu konularında tecrübe edindim. Bunlar dışında hobi amacıyla başlasam da sonradan ürüne dönüşen, geliştirme kartları ile farklı çalışmalarım olmuştur. Raspberry Pi üzerinde yaptığım donanımsal ve yazılımsal işler ile çok farklı ürünler ortaya çıkartarak tecrübe edindim.

2 Yorum

  1. Eline sağlık

    Cevapla
  2. GetFiles, tüm dizinleri bulup bir listeye alırken (list add); EnumerateFiles her dosya bulundukça bağlanan işlemi yapar (yield return).
    Burada iteratöre sayma işlemi bağlanmıştır. Dolayısıyla ilk metot geriye büyükçe bir dosya dizisi dönecek akabinde bu dizinin boyutu alınacaktır. İkinci durumda ise her dosya bulundukça gizli bir “adet” değişkeni bir arttırılacak ve sıradaki değere geçerken mevcut dosya değeri çöpe atılacaktır. Bellekten ve işlemciden büyük tasarruf var.

    Cevapla

Cevap bırakın

Email adresiniz gizli kalacak Zorunlu alanlar * olarak işaretlenmiştir

Bunları kullanabilirsinizHTML etiketler ve öznitelikleri: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>