C# ile Dosyalarımızı Toparlayalım

Kasım 8, 2011

Merhaba arkadaşlar bugün çalışırken masaüstümün çok karmaşık olduğunu fark ettim bir anda , bunun da sebebi zaman içinde kullanırım diye masaüstüne atıp daha sonra unuttuğum dosyalar bu dosyalar içinde resminden tutunda mp3,exe,bat ,avi , pps, xml,xls … vs    bunlar gibi bir çok dosya var masaüstüm karmaşık oldugu için çalışmamıda olumsuz etkilediğini hissettim bir anda daha sonra dosyaları klasör klasör ayırmaya karar verdim ama bir sorun vardı ben masaüstüm her dağıldıgında bu işleme 1 saatimi mi ayıracaktım ? tabiki hayır bunun yerine tüm uyuşuk yazılımcılar gibi bende (tabiki meslek konusunda değil sadece rutin yapılması gereken sıkıcı işler için bahsediyorum) bu işi programa yaptırmaya karar verdir.Hemen VisualStudio’da bir tane C# projesi oluşturdum ve basit bir tasarımdan sonra kodlamaya başladım.İsterseniz toparlanmadan önceki masaüstü me bir bakalım

 

 

 

 

Projemizi oluşturduktan sonra şu şekilde basit arayüzümüzü tasarlıyalım.

 

 

 

 

Yapacağımız program sadece masaüstünü düzenlememektedir Dosya butonundan hangi klasörü seçerseniz o klasör’ün altındaki dosya ve alt klasörleri düzenliyor Dosya buton’umuzdan düzenlemek istediğimiz klasör’ü seçtikten sonra bu klasör’ün içindeki hangi dosyaların düzenlenecegini seçiyoruz.Örnegin : Müzikler checkedBox ‘ını seçersek düzenlemek için seçtiğimiz klasör’ün içindeki mp3 ve mp4 uzantılı dosyaları tek bir Müzikler klasöründe toplayacaktır. Aynı şekilde Videolar , Resimler , Programlar … checkedBox ‘ ları içinde geçerlidir.En alttaki Klasörler checkedBox ‘ ise seçtiğiniz yolda bulunan tüm dosyaları tek bir Klasörler dosyası içinde toplamaktadır.Bu şekilde ben masaüstümü toplama isteğindeyim :) Şimdi kodlamamıza geçelim ilk olarak using kısmımıza bakalım

 

 

 

 

Sınıflarımızı tanımladıktan sonra global olarak değişkenlerimizi tanımlayalım.

 

 

 

 

Dizilerimizi hangi klasör’ün altına handi dosyalarımızı aktarıcaz onu anlayabilmek için sırası ile oluşturuyoruz daha sonra herhangi bir hata ile karşılaşılma durumu için hata durmunu anlatacak değişkenimizi oluşturuyoruz.Dizilerin eleman sırasına dikkat ederseniz sıralama burada çok önemli.Her bir klasör’ün dosya uzantıları doğru olacak şekilde oluşturuldu.Şimdi bilgisayarımızdaki herhangi bir klasör’ü seçebilmek için butonumuzun altına şu kodları yazalım.

 

 

 

 

FolderBrowserDialog nesnesi yardımı ile kullanıcının bir klasör seçmesini sağlıyoruz.Daha sonra kullanıcının seçtiği bu yolu txtPath adındaki textBox nesnemizin text özelliğine atıyoruz.Eğer herhangi bir dosya seçmedi ise uyarıyoruz.Ben masaüstünü toplamaya takdığım için formun load olayında default olarak kullanıcının masaüstü yolun txtPath textBox ının text özelliğine atıyorum :)

 

 

 

 

Formun icon ‘unu da Resource ‘den çekiyoruz.Icon dosyalarını kaynak dosyalarının arasına atmaya bakalım.Projemizde Solution Explorer penceresinde uygulamamızın altında bulunan Properties dosyasına sağ tıklayalım ve Open diyerek Properties penceresini açalım.Açılan pencereden Application kısmındaki Icon dosyası kısmından build edildikten sonra projemizin exe dosyasının icon ‘unu seçiyoruz daha sonra Resources tabına geçiyoruz sol kısımdan ve formumuzda görünmesini istediğimiz icon dosyasını buraya bilgisayarımızdan sürükleyip bırakıyoruz projenizin içinde başka dosyalarda kullanmak isterseniz bu kısma sürükleyip bırakarak projenize dahil edebilirsiniz.Şimdi projeye dahil ettiğimiz icon dosyasına formun load event ‘ inde Resources.<icon dosyası adı>; diyerek ulaşıyoruz.

 

Projemizde bilgisayardan hangi kısmı düzenlemek istiyorsak seçtiğimize göre düzenle buton’umuza geçebiliriz.

 

 

 

 

 

Biliyorum biraz uzun oldu ama işlemi tek butonun altında yaptığımız için , şimdi gelelim neler yaptığımıza.İlk olarak textBox ‘ ımız bomu değilmi kontrolünü yaptıktab sonra textBox ‘ ımızda dosya yolu varsa bu yoldaki tüm dosyaları dosyalar dizimize aktarıyoruz herhangi bir klasördeki dosyaları Directory sınıfının GetFiles method’u yardımı ile alabiliriz.Kullanıcını seçtiği klasördeki tüm dosyaları dizimize atadıktan sonra form üzerinde bulunan tüm checkedBox ‘lar içinde dönmeye başlıyoruz bunun amacı ise eğer kullanıcı bu checkedBox’ı seçti ise seçilen klasör’ü oluşturmak ve onunla ilgili dosyaları o klasör’e kopyalamak.Her bir checkedBox’ın checked özelliğinden faydalanıyoruz.Eğer o an bakılan checkedBox tikli ise aşşağıdaki kodlar çalışmaya başlyor ilk etapda daha anlamlı olması bakımından dosyaAd değişkenimize kullanıcının seçtiği yolu atıyoruz ve en yukarıda tanımladığımız dizilerin içinden bu seçilen checkedBox ‘ın dosya uzantılarını buluyoruz  ve uzanti değişkenimize atıyoruz.Seçili olan checkedBox ‘ın uzantılarını bulduktan sonra tüm dosyalar içinde dönmeye başlıyoruz ve o anki dosyaAd değişkeninde Klasörler olup olmadığını kontrol ediyoruz buradaki amacımız ise klasör ‘ün dışında tüm dosyaların herhangi bir uzantısının olmasıdır.Uzantısı olan dosyalarda ayrı klasörlerde ayrı kod yazmamız lazım onun için buada bir if kontrolü ile bu işlemi gerçekleştiriyoruz.Daha sonra o an elimizde bulunan dosya’ nın uzantısını bulup uzanti değişkenimizin içinde varmı yokmu diye kontrol ediyoruz buradaki amaç ise o an elimizde bulunan dosyalar arraylist indeki tüm dosyalar üzerinde işlem yapmıyacak olmamız biz sadece bu klasörler ilgili dosyalar üzerinde işlem yapmamız lazım.Dinamik bulduğumuz dosya uzantısı uzanti değişkenimizin içinde varsa alt kısma geçiyoruz ve kullanıcının seçtiği yolda bu klasör adında başka bir klasör varmı diye kontrol ediyoruz. Directory sınıfının Exists methodu parametre olarak verdiğimiz yolda böyle bir klasör olup olmadığını true veya false olarak geriye döner burada eğer dosya yoksa oluşturuyoruz CreateDirectory method’u yardımı ile daha sonra dosya adını ve uzantısını ad değişkenimize atıyoruz.Yeni klasör’ümüzüde oluşturduğumuz için artık dosyamızı yeni adresine taşıyabiliriz. Dosya taşıma işlemini File sınıfının Move method’u yardımı ile yapıyoruz bu komut kes yapıştır mantığı ile işlem yapmaktadır bizde 2 tane parametre istiyor bunlar dosyanın şu an bulundugu yol ve kopyalamak istediğimiz yol 2 side elimizde olduğu için bu parametreleride verdikten sonra Move method’u sorunsuz bir şekilde çalışacaktır tabiki bu dosya veya klasör taşıma esnasında taşımak istediğimiz dosya veya klasör kullanılmıyor olması lazım yoksa Exception fırlatılacaktır bu ihtimalede karşın try – catch blog’una alıyoruz yazdığımız kodları ve catch kımında global değişkenimize 1 değerini atıyoruz daha sonra bu değişkenimizi kullanacağız.Şu anda dosya toplama işlemi bitti ama kullanıcı checkedBox ‘ larda Klasör seçeneginide seçmiş olabilir onun içinde else kısmındaki kodları yazıyoruz.Bu seferde bulunan yoldaki klasörleri dizimize aktarmak için Directory sınıfımızın GetDirectories methodunu kullanıyoruz.Burada buldugumuz tüm klasörleri yeni yerine taşıyacagımız için bulduğumuz klasörler içinde dönmeye başlıyoruz.Yine yazdığımız kodları oluşabilecek herhangi bir hata durumu için try – catch bloguna alıyoruz ve catch kısmında global değişkenimize 1 değerini atıyoruz.Yeni bulduğumuz klasörler içinde dönerken her bir klasör için klasör adını bir değişkene atıyoruz ve klasör adsız değeride başka bir değişkene atıyoruz ki araya yeni oluşturdugumuz dosya adını sıkıştırabilelim.Daha sonra bu klasör adında klasör yoksa hemen oluşturuyoruz ve bu sefer Directory sınıfının Move method’unu kullanıyoruz çünkü bu sefer klasör kopyalama işlemi yapıyoruz.Bu method da 2 tane parametre istiyor bunlar kaynak klasör yolu ve yeni taşımak istediğimiz klasör yolu.Klasör veya dosya kopyalama işlmlerimiz bittikten sonra en altta if kontrolü ile herhangi bir hata oluştu ise global değişkenimizden anlıyoruz ve kullanılan dosyaların kopyalanamayacagı ile ilgili mesajı ekrana getiriyoruz.Kodlar gibi yazıda biraz uzun oldu :) ama programı çalıştırdığım zaman yeni masaüstümü görünce degdiğine sizde hak vereceksiniz.

 

 

 

 

 

Masaüstündeki tüm dosya ve klasörler tek bir klasörde topladı programı çalıştırdıktan sonra tüm checkedBox’ları seçtim.Sonuç ortada.İyi çalışmalar

 

 

Programın .exe Dosyasını Buradan İndirebilirsiniz.

 

 

Programın Kaynak Kodlarını Buradan İndirebilirsiniz.

 

posted in C# by gokhan

Follow comments via the RSS Feed | Yorum yapın | Trackback URL

Leave Your Comment

*

 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org