31 Mayıs 2015 Pazar

59 C# Görsel Programlama 59 Directory Move Kullanımı (Dosya Adı Değiştirme)

Merhabalar herkese. Yeni bir konu anlatımı ile beraberiz. Bu yazımda sizlere C# ın bizlere direkt olarak imkan vermediği ama bizim biraz sinekten yağ çıkarma tarzında diyebileceğimiz bir yöntem ile gerçekleştirdiğimiz dosya adı değiştirme işlemini anlatacağım.

O zaman Bismillah diyelim ve başlayalım.

Daha detaylı ne olduğundan bahsetmek gerekirse mesela bir klasörde abcd diye bir dosya var biz bu dosyanın o klasör içindeyken adını değiştirmek istiyoruz. C# da bunun için özelleşmiş bir metod yok ama dosya taşıma işlemi için kullanılan Directory sınıfına ait Move metodu ile bunu yapabilmekteyiz.


Kullanımı şu şekilde Directory.Move(EskiDosyadizini,yenidosyadiziniveadı);


Hemen daha detaylı örnek ile bakalım.


Bu klasör içindeki "sdsafsa" isimli dosyamızın adını 1 yapmak istiyoruz.

Directory.Move("C:\Users\Murat Bilginer\Desktop\Yeni klasör\sdsafsa.jpg","C:\Users\Murat Bilginer\Desktop\Yeni klasör\1.jpg") 

İşte bu şekilde yaptığımız anda dosyamızın adı bulunduğu konumda değişmiş olacaktır.

Buradaki bir handikap şudur. Değişme işlemi sağlanırken değişim yapılacak dosya ismi klasör içindeki tüm dosyalar ile karşılaştırılır aynı isimde başka bir klasör varsa geriye hata dönecektir.

Yazmış olduğum programla devam ediyim daha detaylı anlatımıma.


Böyle bir program ile istediğimiz işlemi gerçekleştireceğiz. Kullanıcıdan dosyanın bulunduğu dizini alacağız sonra dosyanın uzantısını ve hangi değerden başlayarak içerdeki dosyaların adını değiştirmek istiyor bunun bilgisini alacağız. Dosyaları değiştir dediğimde işlem gerçekleşmiş olacak.


Öncelike klasör ve dosya işlemlerimizi yapmamıza yardımcı olacak olan System.IO uzayını projemize ekliyoruz.


Dosya bilgilerimizi FileInfo türünden oluşturduğum dizide tutuyorum.



Textbox1 den dosyanın bulunduğu dizinin yolunu alıyoruz.
DirectoryInfo sınıfını kullanarakta o dizinde bulunan diğer dosyaları Dosyalar dizisine alıyoruz.
GetFiles() metodu bize tüm dosya bilgilerini getirecektir.

Try Catch ile hata kontrolü yapma sebebim başlangıç değerine metinsel bir ifade girilirse program patlamasın diye.

Tüm işlemler tamam ise tekrarla isimli metodumuz çalışıyor.

Şimdi o metoda daha yakından bakalım.



dosyabilgisi değişkenine alınan tüm dosyabilgilerini bir for döngüsü yardımı ile ulaşmaya çalışıyoruz.

FullName metodu dosyanın tam adresini bize geri döndürecektir.
Gerekli işlemler aşağıda yapılıyor. 
tekrarla2() isimli metod çağrılıyor.

Şimdide o metodumuza daha yakından bakalım.


Sıra geldi Directory.Move() metodu ile değişim işlemi yapmaya.

x.FullName ile ilk dosyanın tam adresini aldık. Daha sonrada değiştirmek istediğimiz isimle beraber yolu gösterdik. Eğer o klasör içinde o isimde bir dosya daha yoksa değişim işlemi yapılmış olacaktır.



Ama var ise hata dönecek ve catch bloguna gidecektir. Orada da ismi sayı olarak örneğin 1 geldi ise 2 yi kontrol etmesi için y değeri bir artırılıyor ve yine tekrarla2() metodu kendini çağırarak kontrolünü sağlıyor.


İşlemimiz nasıl gerçekleşti bir görelim.

Mesela elimizde şöyle bir dosya olsun.


Bu şekilde içinde 700 den fazla fotoğrafın olduğu ama isimlerinin çok karışık olduğu bir klasörümüz var. Ben bu karmaşa ile uğraşmak istemiyorum hepsine 1 den başlayarak sıra ile isim vermek istiyorum. El ile bunu yapmaya çalışmak tam bir intihar girişimi bitmez çünkü. Ama işte yazmış olduğumuz program ile sadece saniyeler içinde yapmış olacağız.

Dosya yolunu girdik. Uzantımızı girdik. Kaçtan başlayarak isimlendirmesi gerektiğini belirttim. Dosyaları değiştir dedim işte sonuç



1 den 716 ya kadar tüm dosya isimlerini değiştirdi.

İşte bu kadardı kıymetli dostlar umarım faydalı bir yazı olmuştur. Yorumlarınızı ve görüşlerinizi eksik etmezseniz sevinirim. 

Murat Bilginer


Soru Ve Sorunlarınız İçin İletişim  Murat Bilginer

Hiç yorum yok:

Yorum Gönder