Asp"De Textstream Nesnesi -Anlatım
-
İnternette TextStream ile ilgili baya bi yazı var ve çoğu saçmalıktan ibarek =).burda textstream nesnesini tamamen size anlatıcm.Textstream txt dosyası üzerinden işlem yapabilmek için tasarlanmış bir nesnedir.Bunu veritabanı olarak kullanabilirsiz.(Soruluyodu o yüzdn yazıyorm).Ne bilim bi üyelik sistemi ziyaretçi defteri vs. yapabilirsiniz.
1.Sunucu Üzerinden Dosya Oluşturma
Sunucu üzerinden sayfanıza yazacağınız bir kod ile otomatik text dosyası oluşturabilirsiniz. Bunun için dosya sistem nesnesinden faydalanmak gerekiyor.
Evet, işlemlerinizi geniş veritabanlarına yaymak istemiyorsanız sizin işinizi Text Tabanlı Basit Veritabanı görecektir. Bir dosya oluşturabilmek için ASP nesnelerinden birisi dosya sistem'e bağlı olan CreateTextFile metodu ile yararlanacağız. Hemen örnek kodumuzu yazalım;
----------------------
Set nesne = Server.CreateObject("Scripting.FileSystemObject")
Set dosyayarat = nesne.CreateTextFile(Server.MapPath("dosyaadi.txt"),erisim_izni,erisim_formati)
-------------------
Bu ifade ile, üzerinde bulunduğunuz klasör'e bir dosyaadi.txt isimli boş text belgesi yaratabilirsiniz. Burada şuna dikkat edilmesi gerekmektedir. Erişim_izni olan alan için aşağıdaki ifadelerden birisini seçmelisiniz. Bu ziyaretçinin dosyayı kullanırken hangi izinlere sahip olacağını simgeler.
Erişim izni için kullanılabilir özellikler;
1 = dosyanın sadece okunabilir özellikte açılmasını sağlar. Güncelleme yada kaydetme yapılamaz.
2 = dosya yazma izinli özellikte açılmasını sağlar. Tüm izinler verilir.
8 = dosya sadece eklenme (kaydetme) izinli özellikte açılmasını sağlar. Sadece geçmişteki verilerin üzerine ek yapılabilir.
Erişim formatı için kullanılabilir özellikler;
-2 = Bilgisayarın default ayarları ile açar.
-1 = Unicode olarak açar.
0 = ASCII olarak açar.
2.Sunucu Üzerinden Text Dosyasına Veri Kaydetme
Yukarıda Text dosyası oluşturmuştuk şimdi'de aynı örenkten devam edelim
-----------------
' Fso'ya bağlanalım
set nesne = Server.CreateObject("Scripting.FileSystemObject")
' Dosyayı yazma izni ile aç, kontrol et yoksa oluştur
set AO = nesne.OpenTextFile(Server.MapPath("veriler.txt"),8,true)
' Veriyi yazdıralım
AO.Write "asp işte aq\-t-\hehehhe:)\-n-\"
' dosyayı kpt
AO.close
--------------
Gerekli açıklamaları kod üzerinde belirttim ama burada iki prosedürümüz var bu konu hakkında bilmeniz gereken;
WriteLine : Kaydettikten sonra bir satır aşağı indirir.
Write : Kaydettikten sonra olduğu satırdan devam eder.
Verimizi bu şekilde kaydedeceğiz. şimdi burada yer alan \-t-\ ve \-n-\ verileri hakkında bir bilgi vereyim. Bunu Vbscript'e ait fonksiyonlarlada yapabilirdik fakat, konuları daha da irdelemek için split hakkında geniş bilgi vermek için bu şekilde bir örnek yapmak istedim. İlerleyen yazılarımızda bu konuları işleyeceğiz ama bir bilgi vereyim
\-t-\ Tab, \-n-\ Yeni satır anlamında kullanacağız.
şuanda bu konunun mantığını anlamanızı temenni ediyorum. TextStream nesnesini komple tamamladığımızda daha net form ile işlemler yapacağız, ziyaretçi defteri oluşturacağız.
3.Text Dosyasından Verileri Okuma
Yine yukarıdan devam edelim yazdırmıştık.Şimdi bunu bi sayfaya yazdıralım
------
' fso'ya bağlanalım
set nesne = Server.CreateObject("Scripting.FileSystemObject")
' Dosyayı kontrol et yoksa oluştur, yazma izni ile aç
set AO = nesne.OpenTextFile(Server.MapPath("veriler.txt"),1)
' Veriyi Oku ve Çıktı Ver
Response.Write AO.ReadAll
' Dosyayı kapat
AO.close
----------
Tabi bu basit bir şekilde oldu.Şimdi split ile tab ve yeni satır işlemlerini kullanarak bu işlemi yapalım.Göze hitap etsin :)
4.Belirli Karakterleri Okuma
Read metodunun bize sunduğu bir özellik olan belirli sayıda karakter okuma işlemini gerçekleştirelim.
-------------------
' FSO bağlan
set nesne = Server.CreateObject("Scripting.FileSystemObject")
' Dosyayı kontrol et yoksa oluştur, yazma izni ile aç
set AO = nesne.OpenTextFile(Server.MapPath("veriler.txt"),1)
' Veriyi Belirli Sayıda Oku ve Çıktı Ver
Response.Write AO.Read(3)
' Dosyayı kapat
AO.close
--------------
Response.Write AO.Read(3) satırında ilk 3 karakteri oku dedik.Yani bu kadar Basit.
5.Baştan belirli karakterleri atlamak
Az önce belirtilen karakteri okuyup, kalanı kırpmıştık. şimdi ise bunun tam tersi olanı yapacağız. Belirtilen karakteri kırpıp, kalanı okutacağız.
------------
' FSO bağlan
set nesne = Server.CreateObject("Scripting.FileSystemObject")
' Dosyayı kontrol et yoksa oluştur, yazma izni ile aç
set AO = nesne.OpenTextFile(Server.MapPath("veriler.txt"),1)
' Veriyi Kırp ve Çıktı Ver
AO.Skip(3)
Response.Write AO.ReadAll
' Dosyayı kapat
AO.close
-------------
Peki bu iki işlemi birleştirerek kullanamıyız. Neden olmasın? Hem kırpalım hemde belirtilen karakter kadar okutalım.
-----------
' FSO bağlan
set nesne = Server.CreateObject("Scripting.FileSystemObject")
' Dosyayı kontrol et yoksa oluştur, yazma izni ile aç
set AO = nesne.OpenTextFile(Server.MapPath("veriler.txt"),1)
' Veriyi Kırp, Süz ve Çıktı Ver
AO.Skip(3)
Response.Write AO.Read(5)
' Dosyayı kapat
AO.close
-----------
İşte alın ilk 3 karakteri atladık sonraki 5'ini yazdırdık.
6.Text Dosyasından Belirli Bir Satırı Okutma
Bu konuda pek fazla söylenecek birşey yok. Daha önce hep ReadAll fonksiyonunu kullanıyorduk şimdi ReadLine fonksiyonu ile yazılarımızı listeleyeceğiz.
-----------
' FSO bağlan
set nesne = Server.CreateObject("Scripting.FileSystemObject")
' Dosyayı kontrol et yoksa oluştur, yazma izni ile aç
set AO = nesne.OpenTextFile(Server.MapPath("veriler.txt"),1)
' Veriyi Oku ve Çıktı Ver
Response.Write AO.ReadLine
' Dosyayı kapat
AO.close
-------------
7.Text Dosyasından Tüm satırları okumak
Artık bu konudaki basit işlemlerimiz bitiyor. Döngüler işin içine girmeye başlıyor. şimdi daha önceden de söylediğim gibi hala split nesnemizi kullanmayacağız. (Fakat sizler kaydederken işlemlerinizde düzenli kaydetmeniz halinde split'e gerek duymadan listeleme yapabilirsiniz. Ama yinede bir işlemi daha derli toplu yapabilmek için kaydederken düzensiz, verileri okurken düzenli okumak daha mantıklıdır.)
Öncelikle kullanacağımız işlemleri düşünelim. Mutlaka ReadAll fonksiyonumuz olacaktır. Unutmayın ReadAll tümünü, ReadLine satırı ifade eder.
--------------
' FSO bağlan
set nesne = Server.CreateObject("Scripting.FileSystemObject")
'Dosyayı kontrol et yoksa oluştur, yazma izni ile aç
set AO = nesne.OpenTextFile(Server.MapPath("veriler.txt"),1)
'Döngüyü dosyada veri bitene kadar aç, sürdür ve ekrana çıktı ver
Do while AO.AtEndOfStream = false
Response.write AO.ReadLine
Response.write "<br />" 'yanyana olsn diye bi br atlm
Loop
' Dosyayı kapat
AO.close
--------------------
Burada şimdiye kadar karşılaşmadığımız bir düğüm noktası var. AtEndOfStream = false Anlamı ise şudur. Dosyayı baştan sona kadar tarar (Konuk dosyayı konumlama) ve değer sona geldiğinde bitirir.
Yani kısaca biz şurada şöyle bir ifade veriyoruz, dosyada veri bitene (sonuna gelene) kadar sürdür.
//=)
