Dosya Sistemi Nesnesi
Dosya Sistemi Nesnesi (FileSystemObject), ASP programýnýn, Web Sunucusunun sabit disk sisteminde, sürücüleri, klasörleri ve dosyalarý yönetmekte kullanacaðýmýz temel araçtýr. Burada, ne denli güçlü bir araçtan söz ettiðimizi hemen görebilmek için þu kodu yazalým ve dosya_yaz.asp adýyla kaydedelim:
<% Option Explicit %>
<HTML>
<HEAD>
<TITLE>ASP ILE DOSYA YAZMA</TITLE>
<META http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<META http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY>
<%
Dim YaziFSO, yaz
Set YaziFSO = CreateObject("Scripting.FileSystemObject")
Set yaz = YaziFSO.CreateTextFile("c:\yazi_deneme.txt",True)
yaz.WriteLine("Bu bir denemedir.")
yaz.Close
%>
<H2><CENTER>Bu Web sayfasý sabit diske yazý yazdýrýr!!
Þimdi C: sürücüsünde yazi_deneme.txt adlý bir dosya olmasý gerekir!
Lütfen bakar mýsýnýz?</H2></CENTER>
</BODY>
</HTML>
Kodumuzun Dim satýrýnda iki deðiþken belirlediðimizi görüyorsunuz. Fakat bu iki deðiþkeni sistem nesnesi olan Scripting’in yeni bir olgusu olarak kullanacaðýmýz için daha önce standart deðiþkenlere deðer atadýðýmýz gibi deðil, fakat Set komutundan yararlanýyoruz, ve YaziFSO deðiþkeninde bir “Scripting.FileSystemObject” nesnesi oluþturulmasýný saðlýyoruz. (ASP uzmanlarý arasýnda gelenek, nesne deðeri tutan deðiþkenlere, ilgili nesnenin baþ harflerini eklemektir. Böylece bir deðiþkenin adýna bakarak, iþlevini anlamak mümkün olur.)
“yaz” deðiþkeni YaziFSO’da yeni bir olgusunu oluþturduðumuz FileSystemObject’in CreateTextFile (Düzyazý dosyasý oluþtur) metodunu kullanýyoruz; bu metod oluþturulacak dosyanýn adýný ve eðer bu dosya varsa üzerine yazýlmasýna izin veren True (doðru) veya buna izin vermeyen False (yanlýþ

kelimesini argüman olarak alýr. “yaz” deðiþkeni þimdi kendisi bir metod kullanabilecek þekilde, FileSystemObject’in bir örneðidir; nitekim WriteLine metodu ile biraz önce oluþturulan dosyaya, argüman olarak verdiðimiz metni yazdýrmaktadýr. Bu kodu çalýþtýrdýktan sonra, sabit diskinize bakarsanýz, düzyazý dosyasýný göreceksiniz:
Bugüne kadar Web tekniði olarak Browser’da bir sayfayý görüntüleyebileceðimizi sanýyor idiysek, sistem nesneleri kullanarak çok daha farklý þeyler yapabileceðimizi görmüþ olduk. Þimdi FileSystemObject’i daha yakýndan tanýyabiliriz.
Bu nesne bize sabit diske eriþme ve onun kaynaklarýný kullanma imkaný verir. Bütün nesneler gibi kullanýlabilmesi için önce bir deðiþkenin bünyesinde oluþturulmasý gerekir:
<%
Dim DosyaSistemi
Set DosyaSistemi = CreateObject(“Scripting.FileSystemObject”)
%>
Dosya Sistemi Nesnesi’nin 20’den fazla metodu vardýr; fakat bunlardan önemlileri þöyle sýralanabilir:
CopyFile (dosya kopyala), MoveFile (Dosya taþý

, CopyFolder (klasör kopyala), MoveFolder (klasör taþý

, Create Folder (klasör oluþtur), DeleteFile (dosya sil), DeleteFolder (klasör sil).
Þimdi bunlardan birinin nasýl kullanýlabileceðine bir örnek verelim:
<%
Dim DosyaSistemi
Set DosyaSistemi = CreateObject(“Scripting.FileSystemObject”)
DosyaSistemi.DeleteFile “c:\belgelerim\test.*”
%>
Bu program ile “Belgelerim” klasöründeki “test” isimli bütün dosyalarý silmiþ olursunuz. (Bu programý çalýþtýrmadan önce bir kaç kez düþünmeniz, sanýrým iyi olur; çünkü ASP yoluyla sildiðiniz dosyalar, Geri Dönüþüm Kutusu’na gitmez!) Daha az zararlý bir diðer örnek ise þöyle olabilir:
<%
Dim DosyaSistemi
Set DosyaSistemi = CreateObject(“Scripting.FileSystemObject”)
DosyaSistemi.CopyFile “c:\belgelerim\*.*”, “c:\yedekler\”
%>
Bu program “Belgelerim” dizinindeki bütün dosyalarý “Yedekler” dizinine kopyalar.
FileSystemObject’in sadece bir özelliði (Property) vardýr: Drives (sürücüler). Fakat bu özellik, bir deðil bir çok elemandan oluþan bir dizi-deðiþken gibi Kolleksiyon (Collection) sayýlýr. Nede? Çünkü bir Web Server’da birden çok sürücü bulunur. Her sürücü, bu kolleksiyonun üyesidir (FileSystem.Drives) ve her birinin sürücü harfi (.DriveLetter), disk adý (.VolumeName), byte olarak boþ alaný (.FreeSpace) özellikleri vardýr. suruculer.asp adýyla kaydedeceðiniz þu program, denediðiniz sistemin disk-disket-CD-ROM durumunu size listeleyecektir.
<% Option Explicit %>
<HTML>
<HEAD>
<TITLE>ASP ILE SÜRÜCÜ KOLLEKSÝYONU</TITLE>
<META http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<META http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY>
<%
Dim DosyaSistemi, Surucu, Suruculer
Set DosyaSistemi = CreateObject("Scripting.FileSystemObject")
Set Suruculer = DosyaSistemi.Drives
For Each Surucu In Suruculer
%>
Sürücü: <%=Surucu.DriveLetter%>
<% If Surucu.IsReady = True Then%>
Disk Adý: <%=Surucu.VolumeName%>
Boþ alan: <%=Surucu.FreeSpace%>
<% Else %>
Sürücü hazýr deðil!
<% End If
Next %>
</BODY>
</HTML>
Burada özelliklerini ve metodlarýný DosyaSistemi adlý deðiþkene atadýðýmýz Dosya suistemi Nesnesi’nin sürücüler kolleksiyonunun dizi-deðiþken gibi olduðunu söylemiþtik. For..Next akýþ kontrolü ile bu kolleksiyonun bütün üyelerinin sýrayla sürücü harfi, ve hazýrsa disk adý ve boþ alaný bilgilerini alýyoruz. Drives kolleksiyonunun diðer özellikleri arasýnda toplam yüzey geniþliði (TotalSize), sürücü türü (DriveType; 0=bilinmiyor; 1=çýkartýlabilir; 2=sabit; 3=að; 4=CD-ROM; 5= RAM-Drive), ve dosya sistemi (FileSystem; FAT, NTFS, CDFS), kök dizin (RootFolder) vardýr. Bu program bir PWS’da çalýþtýðýnda, þu sonucu alýyoruz:
VBScript açýsýndan, her sürücüde klasörler (Folders) ve onlarýn içinde alt-klasör (Subfolders) ve dosya (Files) kolleksiyonlarý bulunur. (Her klasörün içinde içinde bir alt-klasör nesnesi bulunduðu için ASP ile sonsuza kadar bütün klasörlere gönderme yapabilirsiniz. Klasör nesnesinin bazý özellikleri þunlardýr:
Adý (Name), oluþturulma (DateCreated), eriþim (DateLastAccessed), deðiþtirme (DateLastModified) tarihleri, içindeki dosyalar ve alt-klasörlerdeki dosyalarla birlikte boyutu (Size), bulunduðu sürücü (Drive), içinde bulunduðu klasör (ParentFolder), alt-klasörler (SubFolders), kök dizin olup olmadýðý (IsRoot).
Klasör nesnesinin kopyala (Copy), sil (Delete) ve Taþý (Move) metodlarý vardýr.
Dosya (File) nesnesinin de ad, oluþturma, eriþim, deðiþtirme, boyut, sürücü ve içinde bulunduðu sürücü özellikleri, ve kopyala, sil, taþý metodlarý vardýr.
PWS’ýnýzýn bulunduðu sistemde, söz gelisi C: sürücüsünün kök dizinindeki bütün dosyalarýn listesini size veren bir kod þöyle yazýlabilir (dosyalar.asp):
<% Option Explicit %>
<HTML>
<HEAD>
<TITLE>ASP ILE KLASOR - DOSYA KOLLEKSÝYONU</TITLE>
<META http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<META http-equiv="Content-Type" content="text/html; charset=windows-1254">
</HEAD>
<BODY>
<%
Dim DosyaSistemi, Surucu, Dosya, KokDizin, KokDosyalar, DosyaNesnesi
Dim SurucuHarfi
SurucuHarfi = "C:"
Set DosyaSistemi = CreateObject("Scripting.FileSystemObject")
Set Surucu = DosyaSistemi.GetDrive(SurucuHarfi)
Set KokDizin = Surucu.RootFolder
Set KokDosyalar = KokDizin.Files
For Each DosyaNesnesi In KokDosyalar
%>
<%=DosyaNesnesi.Name%>
<% Next %>
</BODY>
</HTML>
Burada SurucuHarfi deðiþkenin deðerini deðistirerek, arzu ettiðiniz disk/disket veya CD-ROMa ulaþabilirsiniz. GetDrive metodu dikkatinizi çekmiþ olmalý; bu metodla, VBScript, fiilen disk/disket sistemine eriþir.