| ASP'de Dosya işlemleriDosya 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
 
 |