mehmetduran.com - Paylaşmak Güzeldir...
Asp.net ile Text Dosyaları Üzerinde Yazma, Okuma, Ekleme İşlemleri
Bu yazımda text dosyalarına veri ekleme, veri yazma ve text dosyalarını okuma işlemlerini anlatacağım. Başlıkta hem ekleme hem de yazma işlemi diye belirtmemim nedeni; ikisinin de farklı durum olmasından. Kendim bir konu üzerinde log dosyası oluşturuyorum ve bu log dosyasına veri eklemek için küçük bir araştırma yaptığımda sadece tek seferlik verinin nasıl ekleneceğini buldum. Yani; text dosyasına veri eklediğimizde sadece o an eklediğimiz veriler kayıt ediliyor. Halbuki ben text dosyasının içindeki verilerin üstüne ek olarak nasıl veri ekleyeceğimizi arıyordum. Aramalarım sonucunda bu işlemi de yaptım ve sizlerle paylaşmak istedim.

Öncelikle text dosyalarını okumak için FileStream ve StreamReader sınfılarını kullanacağız. Örnek olarak şu metodu yazabiliriz:

    public string log_oku()
    {
        string sonuc = "";
        FileStream fs = new FileStream(Server.MapPath("~/log.txt"), FileMode.Open);
        StreamReader sr = new StreamReader(fs);
        sonuc = sr.ReadToEnd();
        fs.Close();
        return sonuc;
    }

Text dosyalarına içindeki verileri kaybetmeden, her seferinde içindeki verilerin üstüne ek olarak veri eklemek için ise File sınıfını ve AppendText metodunu kullanacağız. Örnek olarak şu kodlara bakabiliriz:

    StreamWriter sw = File.AppendText(Server.MapPath("~/log.txt"));
    sw.WriteLine("deneme");
    sw.Flush();
    sw.Close();

Benim aradığım ve asıl kullanılması gereken metin dosyasına veri ekleme yöntemi yukarıda belirtmiş olduğum yöntemdir. Diğer türlü StreamWriter sınıfını kullanarak veri eklemek kullanışsız. Sadece tek sefer ekleme yapıyor ve veri eklediği dosyada sadece eklenen verileri tutuyor. Kısacası tek seferde eklenen verileri tutuyor. Bununda örneğini şu şekilde bakabiliriz:

    FileStream fs = new FileStream(Server.MapPath("~/log.txt"), FileMode.Open);
    StreamWriter sw = new StreamWriter(fs);
    sw.WriteLine("deneme");
    sw.Flush();
    sw.Close();

Artık ihtiyacımıza göre metin dosyalarını istediğimiz şekilde kullanabiliriz.
İyi Çalışmalar!
Mehmet Duran 18 Eylül Perşembe 2008 15 41759 3,5
Bookmark and Share
Bu Yazıyı Değerlendirin.
Konuyla İlgili Olabilecek Diğer Yazılar Web.config'de Dosya Upload için Gereken Ayarlar C Sharp ile Nesneler Üzerinde JSON Dönüşümleri Asp.net ve Asp.net MVC'de Binary Olarak Dosya (Upload - Download) İşlemleri Asp.net ve Jquery Ajax ile Dizindeki Dosya ve Klasörleri Listeleme Web.config Dosyası Üzerinde İşlemler (Module Ekleme, Çıkarma)
Yorumlar
Yorum Yaz
RSS Yorum Takibi
isimsiz 15 Mart Pazar 2009 14:03 #1
Bunlar hangi taglar arasına yazılacak?Birde onu yazsaydın güzel olurdu doğrusu!
Mehmet Duran 15 Mart Pazar 2009 14:06 #2
Bu soruyu sorduğuna göre daha önce hiç kodlama yapmadın sanırım. Bu kodlar C# kodları, genelde her sayfanın kendi kod sayfası olur ve bu sayfada kod yazılır. Bunun dışında sayfanın head tagı arasında script tagı içerisinde bu kodlamaları yapabiliriz.
Özgür 29 Mart Pazar 2009 00:05 #3
Dosya içine bişeyler yazacağım ama önceki içerik silinsin istiyorum. Bunu nasıl yapacağız...?
Mehmet Duran 29 Mart Pazar 2009 00:56 #4
Dosya içeriğindeki bilgilerin olmaması için yani yeni verileri yazmak için kullanacağımız stream nesnesinin veya writer nesnesinin parametrelerinden biri ile bunu ayarlayabiliyoruz. Şu anda tam olarak bilmiyorum ama parametreler göz atınca sorunu çözeceğini düşünüyorum.
mrtkyz 31 Mayıs Pazar 2009 18:47 #5
verdiğiniz bilgiler çok faydalı teşekkürler. txt dosyasından satır silme işlemini nasıl yapabiliriz.? bununla ilgili bilgi verebilirseniz çok sevinirim. Teşekkürler...
Mehmet Duran 31 Mayıs Pazar 2009 19:56 #6
Txt dosyasında herhangi bir satırı seçme gibi bir durum sözkonusu değil. Silma işlemi değil de aynı işi yapacak başka yöntem kullanılabilir. Daha önce yaptığım bir uygulamada tüm verileri string olarak alıp içinden istediğim satırı çıkartıp txt dosyasına yeniden yazdırmıştım. Bu yöntem ile silme işlemi yapılmış olur.
mrtkyz 31 Mayıs Pazar 2009 20:10 #7
benim geçici bir txt dosyası açma olanağım yok çünkü çoklu oturum açıldığında aynı anda kopyalama işlemi hataya sebep olur. nasıl çözebileceğimiz hakkında bilginiz varsa paylaşırsanız sevirim. Teşekkürler...
Mehmet Duran 31 Mayıs Pazar 2009 22:18 #8
Yeni bir txt dosyasına gerek yok zaten. İşlem yapacağın txt dosyasının içeriğini okuyup string bir değişkene atabilirsin. Daha sonra bu string üzerinde işlem yaparak silmak istediğin satırı silebilir ve sonrada aynı txt dosyasına tekrar yazabilirsin.
Hacı KİŞİ 08 Ekim Perşembe 2009 11:54 #9
hocam konuyla ilgil ibir soru sormak istiyorum. burda text dosyasına yapılan kayıtlarda şunu yapabilirmiyiz. bir grid üzerinde hangi işlemler yapıldı ise her bir aşamayı örneğin bir çekboxa tıklanarak bir alanda veri değişikliği yapıldı. her işlemi adımı adımına kayıt yaptırabilirmiyiz text dosyasına.
Mehmet Duran 08 Ekim Perşembe 2009 15:53 #10
Bunu rahatlıkla yapmak mümkün ama bunu yaptıktan sonra bu verileri sorgulamak kolay olacaksa yapmalısın. Sorgulamalar zor olabilir. Bunun için veritabanı kullanmak daha mantıklı olur. Eğer sorgulamada sorun olmazsa text kullanılabilir. Her kayıt yapacağın olay için gerekli event içerisinde text'e veya veritabanına kayıt ekleyebilirsin.
osman durmuş 23 Kasım Pazartesi 2009 15:12 #11
eğer oluşturduğumuz stream i while döngüsüne sokarsak ve bitane sayaç oluşturursak istediğimiz satırları okutabiliriz
string metin = SR.ReadLine(); int sayi=1; string yenikelime;
while (metin != null)
{
sayi++;
if (sayi > 1 && sayi < 20)//ilk 20 satırı aldı
{
yenikelime= yenikelime+ "\n" + metin;//20 satırı stringe ekledi
}
hakan köse 04 Aralık Cumartesi 2010 15:41 #12
sevgili mehmet benım ıstedıgın su sayfamdakı kodlar arasından sadece bellı bı aralıgı okumak ve orayı degsıtırmek ıstıyorum bunu nasıl yapabılırız acaba yardımcı olursanız cok sevınırım ornegın head taları arasındakı bılgıyı okuyup sayfadakı dıger kodlara dokunmadan sadece head arasında kalan kısmı degıstırmek ıstıyorum bunu streamreader ıle nasıl hem okuyup hemde yanlızca ıstedıgım kısmı degıstırebılırım acaba umarım acıklayıcı olabılmısımdır
Mehmet Duran 11 Aralık Cumartesi 2010 00:08 #13
@hakan, bir metin dosyası üzerinde söylediğin işlemi yapmak şu an için olmayan birşey sanırım. Sen dosyadan bir kısmını alıp değiştirsen de değişen alanı kaydetmek için tüm verileri tekrardan dosyaya yazman gerekir. Bu metin dosyası için bu şekilde. Bu tür yaklaşımdan kurtulmak için veritabanı kullanmalısın.
hasan balcı 11 Mart Cuma 2011 23:01 #14
Bu işlemi asp ortamında (ASP.net ile değil) nasıl yapabilirim pazartesi ödevim var teslim etmem gerekiyor yardım ederseniz çok sevinirim
Mehmet Duran 08 Nisan Cuma 2011 22:43 #15
@hasan, biraz geç oluyor, kusura bakma. ASP'de bu işlemler temel işlemlerdir ve nette örnekleri çok rahat bulabilirsin diye düşünüyorum.
İsim :
Site :
Yorum :

Buradan bu yazıya ait yorumları RSS olarak takip edebilirsiniz.

Bu servis ile yazılara eklenen yorumları RSS ile takip ederek konu ile ilgili başkaları tarafından yapılan yorumları veya konuyla ilgili sorduğunuz sorulara verilen cevapları görebilirsiniz.
Başarısızlıklarınız ile soylu bir şekilde yüzleşin, başarıdan farkı kalmayacaktır.
Bölümler
Yazılar
Arşiv
Arama
Linkler
Site İçi Arama
Son Zamanlarda Ne Yapıyorum ?
İstatistikler - Araçlar - Reklam
İstatistikler
Sayaç
Mehmet Duran | mehmetduran.com | Copyright © 2009