Arama butonu
Bu konudaki kullanıcılar: 1 misafir
28
Cevap
2071
Tıklama
0
Öne Çıkarma
FSO ya Giriş.....(FileSystemObject)
S
20 yıl
Binbaşı
Konu Sahibi

FileSystemObject Nedir?

FileSystemObject (kısaca FSO diyeceğiz) ASP'nin dolayısıyla VBScriptin bize sağladığı sihirli bir değnektir. FSO ile çalıştığı bilgisayarın üzerindeki tüm dosya ve klasörlere ulaşabilir, onlarla kolayca istediğiniz işlemleri yapabiliriz. Bunun içinde dosyaları kopyalamak, silmek, taşımak, listelemek, text dosyaları düzenlemek, yeni dosyalar oluşturabilmek,dosyaların özelliklerini değiştirebilmek vardır. Yani bilgisayarınızda dosyalar üzrinde yaptığınız işlemlerin aynılarını yapabilirsiniz. FSO çok geniş bir konu aslında.Bir çok özelliği ve metodu var. Bunları gruplayarak anlatmak en doğrusu olacaktır. Böylece konu içinde neyin nerede olduğunu bulabilirsiniz. Ben öncelikle FSO'nun özelliklerini ve metotlarını anlatacağım. Sonrada dosya işlemleri,klasör işlemleri,sürücü işlemleri olarak anlatacağım.

FSO'yu kullanabilmek için önce Set komutu ile bir FSO nesnesi oluşturmak gerekir. Bu nesne olmadan işlem yapamayız.



<%
Set FSO = CreateObject("Scripting.FileSystemObject")
%>





Burda hatırlanması kolay olsun diye nesnemize de FSO ismi verdik. Bundan sonraki örneklerde tekrar tekrar bu nesneyi oluşturmayacağız. Ama siz FSO gördüğünüz yerde bunun daha önceden yukarıdaki şekilde oluşturulduğunu bilmelisiniz.







BuildPath

Verdiğiniz bir yol üzerine verdiğiniz isimde yeni yol ekler. Yol ifadesinin geçerli bir yol ifadesi olması gerekmez. String üzerinde işlem yapar.

YeniYol = FSO.BuildPath(yol,eklenecek isim)

<%
YeniYol = FSO.BuildPath("C:\Inetpub\wwwroot","images")
%>


YeniYol değişkeninin değeri "C:\Inetpub\wwwroot\images" olur.

<%
Response.Write FSO.BuildPath("Metin","Aksu")
%>


Çıktısı "Metin\Aksu" olur.

Sadece tek bir isim kullanmak zorunda değilsiniz. "images" yerine "images\deneme" şeklinde de verebilirsiniz. Bu durumda da çıktı "C:\Inetpub\wwwroot\images\deneme" olacaktır. Bu metodun yaptığı işi aşağıdaki şekilde de yapabilirsiniz.

<%
YeniYol = "C:\Inetpub\wwwroot" & "\" & "images"
%>


Ama sizin ana ve eklenecek yolunuz fazladan slashlar içeriyorsa yada değişkenler başka yerden alınıyor ve nasıl geldiğini bilmiyorsanız BuildPath sizi bunları temizleme derdinden kurtarır.

<%
YeniYol = FSO.BuildPath("C:\Inetpub\wwwroot\","\images")
%>


Çıktısı "C:\Inetpub\wwwroot\images" olur.








CopyFile

Belirtilen bir hedeften yine belirtilmiş bir başka hedefe bir veya daha çok dosyayı kopyalar.

FSO.CopyFile KaynakDosya(yada Dosyalar),Hedef,Overwrite

Kaynak kopyalanacak olan dosya yada dosyaların ismidir. Hedef ise ya kopyalanacak olan klasör ismi yada farklı bir isimle kopyalanacak ise yeni dosya ismidir. Overwrite ise eğer kopyalanacak dosya hedefte zaten var ise üzerine yazıp yazılmayacağını belirler. True olursa dosyanın üzerine yazar.False olursa dosyanın zaten var olduğunu söyleyip hata verir. Eğer belirtilmez ise varsayılan olarak True kabul edilir. Kopyalanmak istenen klasör var olmalıdır. Yoksa yol bulunamadı hatası verir.

<%
FSO.CopyFile "c:\resim.bmp" , "d:\Resimler\", True
%>

Bu kod c sürücündeki resim.bmp dosyasını D sürücüsünde ki Resimler klasörüne kopyalar. Eğer dosya var ise üzerine yazar.
<%
FSO.CopyFile "c:\resim.bmp" , "d:\Resimler\", False
%>

Bu kodda C sürücündeki resim.bmp dosyasını D sürücüsünde ki Resimler klasörüne kopyalar. Ama eğer dosya var ise hata verir ve kopyalamaz. Eğer True yada False olarak belirtmezseniz varsayılan olarak True kabul edilir.

<%
FSO.CopyFile "C:\resim.bmp" , "D:\Resimler\"
%>

ile
<%
FSO.CopyFile "C:\resim.bmp" , "D:\Resimler\resim.bmp"
%>

tamamen aynı işi yapar.

<%
FSO.CopyFile "c:\resim.bmp" , "D:\Resimler\picture.bmp"
%>

Bu kod ise C sürücündeki resim.bmp dosyasını D sürücüsündeki Resimler klasörüne picture.bmp ismiyle kopyalar. Bir nevi farklı kaydet olayı yani.

CopyFile metodu ile birden çok dosyayı da aynı anda kopyalayabilirsiniz.

<%
FSO.CopyFile "C:\*.*" , "D:\Deneme\"
%>


Burda *.* demekle C sürücünde ki tüm dosyaları D sürücüsündeki Deneme klasörüne kopyalıyoruz. Tabi ki burada yeni isim belirtme seçeneğimiz yok. Sadece hedef klasör belirtebiliyoruz.

*.* yerine joker karakterler kullanarak kopyalanacak dosyalar için değişik seçenekler oluşturabiliriz.

*.txt = sadece txt uzantılı olanlar
b*.* = isminin ilk harfi b olanlar
boot.* = ismi boot olan dosyalar
?a*.* = isminin 2. harfi a olan dosyalar
?b?.ini = 3 harfli ve isminin 2. harfi b olan ini uzantılı dosyalar.

NOT : FSO ile bu şekilde dosya kopyalayacağınız gibi "FSO ile dosya işlemleri" konusunda göreceğiniz gibi GetFile ile dosyayı bir nesneye atayıp "DosyaNesnesi.Copy Hedef" şeklinde de kopyalayabilirsiniz. Ancak bu şekilde tek bir dosya kopyalayabilirsiniz.

<%
FSO.CopyFile "C:\Resim.bmp" , "D:\Resimler\Resim.bmp"
'veya
FSO.CopyFile "C:\Resim.bmp" , "D:\Resimler"
%>

ile
<%
Set Dosya = FSO.GetFile("C:\Resim.bmp")
Dosya.Copy "D:\Resimler", True(False)
%>

aynı işi görür.







CopyFolder

Belirtilen bir hedef klasörü tüm alt klasörleri ve dosyaları ile birlikte belirtilen bir hedef klasöre kopyalar.

FSO.CopyFolder KaynakKlasor,Hedef,Overwrite

KaynakKlasor kopyalanacak olan klasör, Hedef kaynak klasörün kopyalanacağı hedef klasördür. Overwrite ise True veya False değerlerini alarak eğer klasör var ise klasörün üzerine yazılıp yazılmayacağını belirler. True olursa üzerine yazılır. False olursa yazılmaz. Eğer belirtilmez ise varsayılan olarak True kabul edilir.

<%
FSO.CopyFolder "C:\Windows","D:\Deneme\",True
%>

Bu kod C sürücüsündeki Windows klasörünü tüm içeriğiyle beraber D sürücüsündeki Deneme isimli klasörün içine kopyalar.Hedef belirtilirken sonunda slash kullanıldığına dikkat edin. Eğer slash kullanmazsanız Windows klasörünün içeriği(kendisi değil) Deneme klasörüne kopyalanır.

<%
FSO.CopyFolder "C:\Deneme\*","D:\Deneme\"
'veya
FSO.CopyFolder "C:\Deneme\*","D:\Deneme"
%>


Bu şekilde C sürücüsündeki Deneme klasörünün sadece alt klasörleri D sürücüsündeki Deneme klasörüne kopyalanır.

Eğer hedef olarak verdiğiniz klasör yok ise oluşturulur ve kaynak klasörün içeriği buraya kaydedilir. Yani farklı kaydetme olayı. Mesela D sürücüsünde WinXP isimli bir klasör yok diyelim.
<%
FSO.CopyFolder "C:\Windows","D:\WinXP"
%>

Bu durumda C sürücüsündeki Windows klasörü D sürücüsüne WinXP ismiyle kaydedilir. Hedef klasör belirtilirken yine slash kullanılmadığına dikkat edin.

Eğer XYZ klasörü yoksa
<%
FSO.CopyFolder "C:\Windows","D:\XYZ\WinXP"
%>

derseniz hata alırsınız. FSO sizin için bir XYZ klasörü oluşturup bunun içine WinXP'yi oluşturmaz. Ama eğer XYZ klasörü varsa WinXP klasörü yoksa bu oluşturulur ve kaynak klasör içeriği bunun içine kopyalanır. Eğer WinXP klasörü de varsa bu durumda, yukarda belirtildiği gibi, sonda slash kullanılıp kullanılmadığına bağlı olarak kaynak klasör aynı isimle klasör yapısı korunarak veya sadece içeriğiyle bu klasör içine kopyalanır.

NOT : FSO ile bu şekilde klasör kopyalayacağınız gibi "FSO ile klasör işlemleri" konusunda göreceğiniz gibi GetFolder ile klasörü bir nesneye atayıp "KlasorNesnesi.Copy Hedef" şeklinde de kopyalayabilirsiniz. Ancak bu şekilde tek bir klasör kopyalayabilirsiniz.

<%
FSO.CopyFolder "C:\Windows" , "D:\Deneme", True(False)
%>

ile
<%
Set Klasor = FSO.GetFolder("C:\Windows")
Klasor.Copy "D:\Deneme", True(False)
%>

aynı işi görür.






CreateFolder

Adından anlayacağınız gibi verdiğiniz klasör içinde verdiğiniz isimde boş bir klasör oluşturur.

FSO.CreateFolder YeniKlasor

True/False şeklinde bir argümanı yoktur. Eğer oluşturulmak istenen klasör varsa hata verir.

<%
FSO.CreateFolder "C:\Deneme"
%>

C sürücüsünde Deneme isimli bir klasör oluşturur.

<%
FSO.CreateFolder "C:\Metin\Aksu"
%>

Eğer C sürücünde Metin isimli bir klasör varsa içine Aksu isminde bir klasör oluşturur. Eğer yoksa yol bulunamadı hatası verir.

<%
FSO.CreateFolder "C:\Windows\System32\MetinAksu"
%>


System32 klasörü içinde MetinAksu isminde bir klasör oluşturur.






DeleteFile

Belirttiğiniz bir dosya yada dosyaları siler.

FSO.DeleteFile Dosyaİsmi

<%
FSO.DeleteFile "C:\Deneme.txt"
%>


Siz direk dosya ismi yerine CopyFile konusunda işlediğimiz gibi joker karakterler kullanarak birden fazla dosyayı silebilirsiniz.

<%
FSO.DeleteFile "C:\Deneme\*.*"
%>


C sürücüsünde ki Deneme klasörü içindeki tüm dosyaları siler.

*.txt = sadece txt uzantılı olanlar
b*.* = isminin ilk harfi b olanlar
boot.* = ismi boot olan dosyalar
?a*.* = isminin 2. harfi a olan dosyalar
?b?.ini = 3 harfli ve isminin 2. harfi b olan ini uzantılı dosyalar.

NOT : Siz bu şekilde dosya silebileceğiniz gibi GetFile ile oluşturduğunuz dosya nesnesinin Delete yöntemiyle nesnenin tuttuğu dosyayı silebilirsiniz.

<%
Set Dosya = FSO.GetFile("C:\Deneme\Resim.bmp")
Dosya.Delete
%>


Böylece Resim.bmp dosyası silinmiş oldu.






DeleteFolder

Verdiğiniz bir klasörü tüm alt dosya ve klasörleri ile birlikte siler.

FSO.DeleteFolder Klasörİsmi

Klasör ismi sonunda \ yada / işareti kullanmamalısınız.Yoksa hata alırsınız.

<%
FSO.DeleteFolder "C:\Deneme"
%>

C sürücüsündeki Deneme klasörünü tüm içeriğiyle beraber siler.

NOT : Siz bu şekilde klasör silebileceğiniz gibi GetFolder yöntemiyle oluşturduğunuz klasör nesnesinin Delete metodu ile de nesnenin tuttuğu klasörü silebilirsiniz.

<%
Set Klasor = FSO.GetFolder("C:\Deneme")
Klasor.Delete
%>

C sürücüsündeki Deneme klasörü silinmiş oldu.





Devam Edeceğizz...........................



A
20 yıl
Binbaşı

soyturk eline sağlık FSO konusu gerçekten faydalı bir konu..http://www.fsomanual.com/ adresinde de nerdeyse fso ile ilgili herşey var hem türkçe hemde çok güzel anlatılmış..


Bu mesaja 1 cevap geldi.
T
20 yıl
Yüzbaşı

http://www.developersdex.com/asp/message.asp?p=577&r=4264469

burada seninle aynı soruna sahip bi kullanıcı için cevap verilmiş sanırım


Bu mesaja 1 cevap geldi.
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.