FSO (File System Object) El Kitabı

File System Object (FSO), ASP'de dosya ve klasör işlemleri yapmak için kullanılan güçlü bir COM bileşenidir. Sunucu üzerinde dosya okuma, yazma, oluşturma, silme gibi işlemleri gerçekleştirebilirsiniz.

FSO Nedir?

FSO, Scripting.FileSystemObject COM nesnes olarak erişilebilen ve dosya sistemi üzerinde işlemler yapmanızı sağlayan bir bileşendir. Windows işletim sisteminde varsayılan olarak yüklüdür.

FSO Nesnesini Oluşturma

<% Dim fso Set fso = Server.CreateObject("Scripting.FileSystemObject") ' İşlemlerinizi yapın... Set fso = Nothing %>

Dosya İşlemleri

Dosya Okuma

<% Dim fso, dosya, icerik Set fso = Server.CreateObject("Scripting.FileSystemObject") ' Dosya yolunu belirtin Dim dosyaYolu dosyaYolu = Server.MapPath("veriler/metin.txt") ' Dosyanın varlığını kontrol edin If fso.FileExists(dosyaYolu) Then ' Dosyayı okuma modunda açın Set dosya = fso.OpenTextFile(dosyaYolu, 1) icerik = dosya.ReadAll dosya.Close Response.Write icerik Else Response.Write "Dosya bulunamadı!" End If Set dosya = Nothing Set fso = Nothing %>

Dosya Yazma

<% Dim fso, dosya Set fso = Server.CreateObject("Scripting.FileSystemObject") Dim dosyaYolu dosyaYolu = Server.MapPath("veriler/log.txt") ' Dosyayı yazma modunda açın (2 = yazma, 8 = ekleme) Set dosya = fso.OpenTextFile(dosyaYolu, 8, True) ' Veri yazın dosya.WriteLine Now() & " - Kullanıcı girişi yapıldı" dosya.Close Set dosya = Nothing Set fso = Nothing %>
Dosya yönetimi arayüzü

Dosya Kopyalama ve Taşıma

<% Dim fso Set fso = Server.CreateObject("Scripting.FileSystemObject") ' Dosya kopyalama fso.CopyFile Server.MapPath("kaynak.txt"), Server.MapPath("hedef.txt") ' Dosya taşıma fso.MoveFile Server.MapPath("eski_konum.txt"), Server.MapPath("yeni_konum.txt") ' Dosya silme fso.DeleteFile Server.MapPath("silinecek.txt") Set fso = Nothing %>

Klasör İşlemleri

Klasör Oluşturma ve Silme

<% Dim fso, klasorYolu Set fso = Server.CreateObject("Scripting.FileSystemObject") klasorYolu = Server.MapPath("yeni_klasor") ' Klasör oluşturma If Not fso.FolderExists(klasorYolu) Then fso.CreateFolder klasorYolu Response.Write "Klasör oluşturuldu" End If ' Klasör silme If fso.FolderExists(klasorYolu) Then fso.DeleteFolder klasorYolu Response.Write "Klasör silindi" End If Set fso = Nothing %>

Klasör İçeriğini Listeleme

<% Dim fso, klasor, dosyalar, altKlasorler, item Set fso = Server.CreateObject("Scripting.FileSystemObject") Set klasor = fso.GetFolder(Server.MapPath("./")) ' Dosyaları listele Set dosyalar = klasor.Files Response.Write "<h3>Dosyalar:</h3><ul>" For Each item In dosyalar Response.Write "<li>" & item.Name & " (" & item.Size & " byte)</li>" Next Response.Write "</ul>" ' Alt klasörleri listele Set altKlasorler = klasor.SubFolders Response.Write "<h3>Klasörler:</h3><ul>" For Each item In altKlasorler Response.Write "<li>" & item.Name & "</li>" Next Response.Write "</ul>" Set altKlasorler = Nothing Set dosyalar = Nothing Set klasor = Nothing Set fso = Nothing %>

Drive Bilgileri

<% Dim fso, surucu Set fso = Server.CreateObject("Scripting.FileSystemObject") Set surucu = fso.GetDrive("C:") Response.Write "Sürücü: " & surucu.DriveLetter & "<br>" Response.Write "Toplam Boyut: " & FormatNumber(surucu.TotalSize/1073741824, 2) & " GB<br>" Response.Write "Boş Alan: " & FormatNumber(surucu.FreeSpace/1073741824, 2) & " GB<br>" Response.Write "Dosya Sistemi: " & surucu.FileSystem & "<br>" Set surucu = Nothing Set fso = Nothing %>
Güvenlik Uyarısı: FSO ile dosya işlemleri yaparken kullanıcı girdilerini direkt kullanmayın. Path traversal saldırılarına karşı dosya yollarını kontrol edin ve sadece belirlediğiniz klasörlerde işlem yapın.

Pratik Örnekler

Sayaç (Counter) Uygulaması

<% Function SayacOku() Dim fso, dosya, sayi Set fso = Server.CreateObject("Scripting.FileSystemObject") dosyaYolu = Server.MapPath("sayac.txt") If fso.FileExists(dosyaYolu) Then Set dosya = fso.OpenTextFile(dosyaYolu, 1) sayi = CLng(dosya.ReadLine) dosya.Close Else sayi = 0 End If sayi = sayi + 1 Set dosya = fso.OpenTextFile(dosyaYolu, 2, True) dosya.WriteLine sayi dosya.Close Set dosya = Nothing Set fso = Nothing SayacOku = sayi End Function Response.Write "Ziyaretçi Sayısı: " & SayacOku() %>

Log Dosyası Oluşturma

<% Sub LogYaz(mesaj) Dim fso, dosya, dosyaAdi Set fso = Server.CreateObject("Scripting.FileSystemObject") ' Günlük log dosyası dosyaAdi = "log_" & Year(Now()) & Month(Now()) & Day(Now()) & ".txt" dosyaYolu = Server.MapPath("logs/" & dosyaAdi) Set dosya = fso.OpenTextFile(dosyaYolu, 8, True) dosya.WriteLine Now() & " | " & Request.ServerVariables("REMOTE_ADDR") & " | " & mesaj dosya.Close Set dosya = Nothing Set fso = Nothing End Sub ' Kullanım LogYaz "Kullanıcı giriş yaptı" %>