DOSYA İŞLEMLERİ

ASP'de Dosya işlemleri


Dosya Sistemi Nesnesi (FileSystemObject) - FSO

Web Sunucusunun sabit diskinde, sürücüleri, klasörleri ve dosyaları yönetmekte kullanacağımız temel nesnedir.

Bu nesnemiz 24 metod ve 1 özellikten oluşmaktadır. Genel olarak bu nesnelere öncelikle göz atalım.

FileSystemObject Metodları
1. BuildPath (Mevcut yola isim ekler)
2. CopyFile (Dosya kopyalar)
3. CopyFolder (Klasör kopyalar)
4. CreateFolder (Klasör oluşturur)
5. CreateTextFile (Text dosyası oluşturur)
6. DeleteFile (Dosya Siler)
7. DeleteFolder (Klasör Siler)
8. DriveExists (Sürücüyü kontrol eder)
9. FileExists (Dosyayı kontrol eder)
10. FolderExists (Klasörü kontrol eder)
11. GetAbsolutePathName (Kesin yol ifadesini verir)
12. GetBaseName (Dosya veya klasörün ana ismini verir)
13. GetDrive (Yol üzerindeki sürücüyü getirir.)
14. GetDriveName (Sürücü ismini verir)
15. GetExtensionName (Dosya uzantısını verir)
16. GetFile (Yol üzerindeki dosya nesnesini verir)
17. GetFileName (Dosya ismini verir)
18. GetFolder (Yol üzerindeki klasör ismini verir)
19. GetParentFolderName (Parent klasör ismini verir)
20. GetSpecialFolder (Belirtilen klasörür geri döndürür)
.21 GetTempName (Rasgele geçici (cache) bir dosya veya klasör ismi üretir)
22. MoveFile (Dosya taşır)
23. MoveFolder (Klasör taşır)
24. OpenTextFile (Text dosyası açar)

FileSystemObject Özellikleri (Properties)
1. Drives (Sürücü nesnesinin bir koleksiyonunu döndürür)

Bu metodları inceleyelim

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:Inetpubwwwroot","images")
%>


YeniYol değişkeninin değeri "C:Inetpubwwwrootimages" olur.

 

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


Çıktısı "MetinAksu" olur.

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

 

<%
YeniYol = "C:Inetpubwwwroot" & "" & "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:Inetpubwwwroot","images")
%>


Çıktısı "C:Inetpubwwwrootimages" olur.

CopyFile (dosya kopyala)
Bu nesne ile Server üzerinde dosya yaratırız;

 

<%
Dim Kopyala
Set Kopyala=CreateObject ("Scripting.FileSystemObject")
Kopyala.CopyFile "c:inetpubwwwrootaspdosya.txt", "c:inetpubwwwrootnedir", true
%>


Kodları inceleyelim;
Dim Kopyala
Set Kopyala=CreateObject ("Scripting.FileSystemObject")

"Kopyala" isimli bir değişken yaratmıştık. Ve bu değişkeni FileSystemObject nesnesinde kullanacağımızı belirlemiştik.
Kopyala.CopyFile "c:inetpubwwwrootaspdosya.txt", "c:inetpubwwwrootnedir", true

"Asp" dizini olarak yerini belirlediğimiz dosyayı kopyalıyoruz ve "nedir" dizinine yapıştırıyoruz.

Nasıl yapacağımızı öğrendik fakat dikkat etmemiz gereken bir nokta var örnekteki "nedir" dizini server da yoksa hata mesajı ile karşılaşırsınız.
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:XYZWinXP"
%>


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:MetinAksu"
%>


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:WindowsSystem32MetinAksu"
%>


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

CreateTextFile

İstediğiniz dizinde adını belirleyebileceğiniz, içine yazı da yazabileceğimiz bir text dosyası yaratmamızı sağlar. Vereceğimiz örnekte yaratılacak text dosyasının uzantısını .txt olarak belirledik siz bunu .asp,.inc,.aspx vs.. olarak ta yapabilirsiniz hatta yarattığınız dosyanın içine asp kodları da yazdırabilirsiniz.

 

<%
Dim Dosya, Yazi
Set Dosya=CreateObject ("Scripting.FileSystemObject")
Set Yazi = Dosya.CreateTextFile ("c:inetpubwwwrootaspDeneme.txt", true)
Yazi.WriteLine ("ASPnedir?com - deneme mesajı.")
Yazi.WriteLine ("ASP ile text dosyasına mesaj yazdırıyoruz")
Yazi.Close
%>


Bu kodu yazıp çalıştırırsanız, belirlediğiniz dizinde Deneme.txt isminde bir yazı dosyası yaratılır. Ve içine bizim yazdırdığımız mesajlar yazılır.

Kodları denerken dikkat etmeniz gereken klasörün yolunu doğru vermektir.

DeleteFile

Daha önceden belirlediğimiz dosyayı silmemizi sağlar.

 

<%
Dim Sil
Set Sil=CreateObject ("Scripting.FileSystemObject")
Sil.DeleteFile ("c:inetpubwwwrootaspnedirdeneme.txt")
%>


Buradaki kodlar ile "aspnedir" dizindeki deneme.txt ismindeki dosyayı siliyoruz.
DeleteFolder

Belirlediğimiz dizindeki herhangi bir klasörü silmemizi sağlar.

 

<%
Dim Sil
Set Sil=CreateObject ("Scripting.FileSystemObject")
Sil.DeleteFolder ("c:inetpubwwwrootaspnedirdeneme")
%>


Buradaki kodlar "aspnedir" dizindeki "deneme" isimli klasörü siler.

DriveExists

Belirttiğiniz sürücünün var olup olmadığını test eder. Eğer var ise True yoksa False değeri döndürür.

FSO.DriveExists("Sürücü Harfi")

Verilecek değer Windows'un sürücüleri isimlendirme kurallarına uymalıdır. Yani bir sürücüyü ifade etmek için harf kullanmalısınız. Aksi takdirde çıktı olarak her zaman False değeri döndürür.

 

<%
Response.Write FSO.DriveExists("C")
%>


Ekrana True yazdıracaktır.

 

<%
Response.Write FSO.DriveExists("Z")
%>


Eğer hard diskinizi paramparça etmediyseniz False değeri döndürecektir. ))))

Sürücü harfini tek başına yada önüne : veya : veya :/ konmuş şekilde kullanabilirsiniz.

 

<%
FSO.DriveExists("C")
FSO.DriveExists("C:")
FSO.DriveExists("C:")
FSO.DriveExists("C:/")
%>


Yukarıdaki kullanımların hepsi geçerlidir.

FileExist

Bu nesnemiz server da belirlediğiniz isimli bir dosya olup olmadığını kontrol eder.

 

<%
Dim Kontrol
Set Kontrol=Server.CreateObject("Scripting.FileSystemObject")
If Kontrol.FileExists ("c:inetpubwwwrootaspnedirdeneme.txt") = true then
Response.Write ("deneme.txt dosyası bulundu!")

Else
Response.Write ("deneme.txt dosyası bulunamadı!")
End If
Set Kontrol=Nothing
%>


FolderExist

Bu nesnemiz server da belirlediğiniz isimli bir klasör olup olmadığını kontrol eder.

 

<%
Dim Kontrol
Set Kontrol=Server.CreateObject("Scripting.FileSystemObject")
If Kontrol.FolderExists ("c:inetpubwwwrootaspnedirdeneme") = true then
Response.Write ("deneme klasörü bilgisayarda bulundu.")

Else
Response.Write ("deneme klasörü bilgisayarda bulunamadı!")
End If

Set Kontrol=Nothing
%>


GetAbsolutePathName

Verdiğiniz bir yol için sürücünün root dizininden Windows isimlendirme kuralına göre tam yolu getirir. Verdiğiniz yolun geçerli olup olmaması yada Windows standartlarına uyması önemli değildir. Çünkü bu metot string üzerinde işlem yapar.

FSO.GetAbsolutePathName("yol")

 

<%
Response.Write FSO.GetAbsolutePathName("C:Inetpubwwwroot")
Response.Write FSO.GetAbsolutePathName("C:Inetpubwwwroot")
Response.Write FSO.GetAbsolutePathName("C:Inetpubwwwroot/")
Response.Write FSO.GetAbsolutePathName("C:/Inetpub/wwwroot/")
%>


Hepsinin de çıktısı "C:Inetpubwwwroot" şeklinde olur.

 

<%
Response.Write FSO.GetAbsolutePathName("C:Metin/Aksu/deneme.abcdefg")
%>


Çıktısı "C:MetinAksudeneme.abcdefg" şeklinde olur.

 

<%
Response.Write FSO.GetAbsolutePathName(Server.Mappath("/Deneme"))
%>


Çıktısı "C:InetpubwwwrootDeneme" olur.
GetBaseName

Verdiğiniz bir yoldaki dosya yada klasörün taban adını getirir. Verdiğiniz yolun geçerli olması yada Windows standartlarına uyması önemli değildir. Çünkü bu metotta string üzerinde işlem yapar.

FSO.GetBaseName("yol")

 

<%
Response.Write FSO.GetBaseName("C:MetinAksudenemeindex")
Response.Write FSO.GetBaseName("C:MetinAksudenemeindex")
Response.Write FSO.GetBaseName("C:MetinAksudenemeindex.asp")
Response.Write FSO.GetBaseName("C:MetinAksudenemeindex.asp")
Response.Write FSO.GetBaseName("denemeindex")
Response.Write FSO.GetBaseName("denemeindex.asp")
Response.Write FSO.GetBaseName("index.asp")

Response.Write FSO.GetBaseName(Server.Mappath("index"))
Response.Write FSO.GetBaseName(Server.Mappath("index.asp"))
%>


Hepsinin çıktısı "index" olur.

GetDrive

Verdiğiniz bir sürücü harfi için o harfe sahip sürücü üzerinde işlemler yapılabilen bir sürücü nesnesi döndürür. Sürücü geçerli olmalıdır.

Set Surucu = FSO.GetDrive("Sürücü Harfi")

GetDriveName

Verdiğiniz bir yol stringi için sürücü harfini içeren bir string döndürür. Verdiğiniz yolun geçerli olması önemli değildir. Ancak sürücü harfinden sonra (:) olmalıdır.

FSO.GetDriveName("Yol")

 

<%
Response.Write FSO.GetDriveName("z:")
Response.Write FSO.GetDriveName("z:")
Response.Write FSO.GetDriveName("z:/")
Response.Write FSO.GetDriveName("z:sfgjcvmnc")
Response.Write FSO.GetDriveName("z:sfgjcvmnc")
Response.Write FSO.GetDriveName("z:/sfghdf")
%>


Hepsinin çıktısı "z:" olur.

 

<%
Response.Write FSO.GetDriveName(Server.Mappath("/"))
%>


Çıktısı "C:" olur.

GetExtensionName

Verdiğiniz string içinde en son bileşenin uzantısını verir. Verdiğiniz stringin geçerli bir yol ifadesi olması yada dosya uzantısının geçerli bir uzantı olması gerekmez. Kısacası verdiğiniz string içindeki son noktadan sonraki kısmı verir.

FSO.GetExtensionName("string")

 

<%
Response.Write FSO.GetExtensionName("C:Denemeindex.asp")
%>


Çıktısı "asp"

 

<%
Response.Write FSO.GetExtensionName("C:Denemeindex.metin")
%>


Çıktısı "metin"

 

<%
Response.Write FSO.GetExtensionName("ahmetmehmetsüleyman.hilmi")
%>


Çıktısı "hilmi"

 

<%
Response.Write FSO.GetExtensionName("ahmetmehmetsüleyman.hilmi.fikri.zikri")
%>


Çıktısı "zikri"

GetFile

Belirttiğiniz bir dosya için üzerinde işlemler yapılabilen bir dosya nesnesi oluşturur. Dosya geçerli olmalıdır.

Set Dosya = FSO.GetFile("Dosya Yolu")
GetFileName

Verdiğiniz bir string ifadesi içinde ki en son bileşenin uzantısıyla beraber ismini verir. Eğer uzantı yoksa sadece ismini verir. GetBaseName dosya ismini veriyor, uzantısını vermiyordu. GetFileName uzantısıyla beraber dosya ismini verir. Verdiğiniz stringin geçerli bir yol ifadesi olması gerekmez. Bu yöntemde string üzerinde işlem yapar.

FSO.GetFileName("İfade")

 

<%
Response.Write FSO.GetFileName("C:Denemeindex.asp")
Response.Write FSO.GetFileName("C:Denemeindex.asp")
Response.Write FSO.GetFileName("sf4574356754index.asp")
%>


Çıktıları "index.asp" olur.

 

<%
Response.Write FSO.GetFileName("C:Denemeindex")
Response.Write FSO.GetFileName("C:Denemeindex")
Response.Write FSO.GetFileName("sf4574356754index")
%>


Çıktıları "index" olur.
GetFileVersion

Exe, dll gibi dosya versiyonu bilgisini taşıyan dosyalarda dosyanın sürüm numarasını verir. Verilen dosya yolu ifadesi geçerli olmalıdır. Eğer yol geçerli değilse yada dosya sürüm bilgisi taşımıyorsa boş değer döner.

FSO.GetFileVersion("Dosya Yolu")

 

<%
Response.Write FSO.GetFileVersion("C:Program FilesAheadNeroAudioPluginMgr.dll")
%>


Benim sistemimde çıktısı "2.0.0.2" şeklinde.

 

<%
Response.Write FSO.GetFileVersion("C:Program FilesAheadNeronero.exe")
%>


Çıktı "5.5.9.9" şeklinde.

GetFolder

Belirttiğiniz bir klasör için üzerinde işlemler yapılabilen bir klasör nesnesi oluşturur. Klasör geçerli olmalıdır.

Set Klasor = FSO.GetFolder("Klasör Yolu")


GetParentFolderName

Verdiğiniz bir yol ifadesi için o yolun en son dosyasının veya klasörünün içinde bulunduğu klasör ismini döndürür. Yol ifadesinin geçerli olması gerekmez.

FSO.GetParentFolderName("Yol")

 

<%
Response.Write FSO.GetParentFolderName("C:MetinAksuindex.asp")
Response.Write FSO.GetParentFolderName("C:MetinAksu/index.xghdmhgghf")
%>


Her ikisinin de çıktısı "C:MetinAksu" olur.

 

<%
Response.Write FSO.GetParentFolderName("C:MetinAksu")
Response.Write FSO.GetParentFolderName("C:MetinAksu")
Response.Write FSO.GetParentFolderName("C:MetinAksu/")
%>


Üçünün de çıktısı "C:Metin" olur.

 

<%
Response.Write FSO.GetParentFolderName("GiresunMetinAksu")
Response.Write FSO.GetParentFolderName("GiresunMetinAksu")
%>


Çıktıları "GiresunMetin" olur.

GetSpecialFolder

Vereceğiniz 0,1 veya 2 sayısı için Windows özel dizinlerini döndürür. Bu üç sayı dışında argüman kabul etmez.

FSO.GetSpecialFolder(sayı)

0 = "C:WINDOWS"
1 = "C:WINDOWSsystem32"
2 = "C:WINDOWSTemp"

 

<%
Response.Write FSO.GetSpecialFolder(1)
%>


Çıktısı "C:WINDOWSsystem32" olur.

GetTempName

Geçici bir dosya için .tmp uzantılı rastgele bir dosya adı üretir. Dosya ismi başında "rad" sözcüğü bulunur. Bu rastgele uzantılı dosya oluşturulmaz. Sadece dosya adı üretir. Siz bu ismi CreateTextFile ile dosya oluştururken kullanabilirsiniz.

FSO.GetTempName

 

<%
Response.Write FSO.GetTempName
%>


Çıktısı "A9932" kısmı her seferinde değişmek kaydıyla "radA9932.tmp" gibi olur.

Move File

Bu nesne ile Server'da bulunan bir dosyayı başka bir dizine taşıyabiliriz

 

<%
Dim Tasi
Set Tasi=Server.CreateObject ("Scripting.FileSystemObject")
Tasi.MoveFile "C:inetpubwwwrootaspDeneme.txt","C:inetpubwwwrootnedir"
Set Tasi=Nothing
%>


Bu kodu yazıp çalıştırırsanız, önceden belirlediğimiz dosya kontrol edilir eğer orada bulunursa dosyayı alarak yine önceden belirlediğiniz dizine taşır.

MoveFolder

Herhangi bir klasörü belirlediğiniz bir klasöre taşımımızı sağlar.

 

<%
Dim Tasi
Set Tasi=CreateObject ("Scripting.FileSystemObject")
Tasi.MoveFolder "c:Inetpubwwwrootasp", "c:Inetpubwwwrootnedir", true
%>


Bu işlem için taşınacak kaynak klasörü belirtirken sonuna slash() koymuyoruz. Koyarsak yol bulunamadı hatası verir. c:Inetpubwwwrootasp olduğu gibi.
Taşınacak klasör için bu sınırlama yok. "c:Inetpubwwwrootnedir” yada “c:Inetpubwwwrootnedir"şeklinde yazabilirsiniz.
“asp” klasörü içindeki alt klasörleri “nadir” klasörüne taşınır. asp klasörünün kendisi ve içindeki dosyaları ise taşınmaz.

OpenTextFile ; TextStream Nesnesi bölümde ayrıntıları bulabilirsiniz.

Drives :
Sürücü Koleksiyonu
Bir bilgisayar üzerindeki tüm sürücüleri içeren bir dizi değişken döndürür

 

<%
Dim DosyaSistemi, Surucu, Suruculer
Set DosyaSistemi = CreateObject("Scripting.FileSystemObject")
Set Suruculer = DosyaSistemi.Drives
For Each Surucu In Suruculer
%>
<b>Sürücü:</b> <%=Surucu.DriveLetter%><br>
<% If Surucu.IsReady = True Then%>
<b>Disk Adı:</b> <%=Surucu.VolumeName%><br>
<b>Boş alan:</b> <%=Surucu.FreeSpace%><br>
<% Else %>
<i>Sürücü hazır değil!</i><br>
<% End If
Next %>


Yukardaki Örnek sunucunun disk-disket-CD-ROM durumunu size listeleyecektir
 

Yardım İçin Sadece Bir Tık Yeter
 
Sponsor
 
.tk
 
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol