Finaller, Fuarlar, MSP başvuru videosu derken blogumu yeteri kadar boşladım. (Eğer bu haftada birşeyler yazmasaydım kapatacaktım blogumu :)). Admin paneline girerken tedirgindim ama şifresini hatırlayınca içim rahatladı :).
Yazacağım makalelerin konusunu daha çok forumlardan belirliyorum. Forumlarda en çok hangi konularda problemler ile karşılaşılıyorsa onunla ilgili birşeyler yazmayı tercih ediyorum. Dosyadan okuma yazma işlemleri ile ilgili sorular soruluyordu bende bununla alakalı bir makale yazmak istedim. Umarım faydalı olur…
Dosyadan okuma yazma yapmak için bir tane FileStream türünden nesneye ihtiyacınız olacak.
Örnek olarak; FileStream fs = new FileStream(@”C:\dosya.txt”, FileMode.Create, FileAccess.Read);
İlk parametre hangi dosyadan okuma yapacaksanız veya yazma yapacaksanız dosya yolunu, ikinci parametre ise FileMode türünden bir enum. Bu enum türünden dosyayı ne modda üreteceğinizi veya erişeceğinizi belirtiyorsunuz. FileMode‘da şu değerler var;
FileMode.Append: Eğer dosya başka bir program tarafından kullanılıyorsa veya açıksa
yazacağınız karakterler dosyanın sonuna eklenecek.
FileMode.Create: Belirttiğiniz dosya isminde bir dosya yoksa üretecek, eğer varsa üstüne
yazacak.
FileMode.CreateNew: Dosya olsada olmasada yeni bir tane üretecek.
FileMode.Open: Belirtilen dosyayı açacak. Bu durumda dosyanın kapalı olması lazım
aksi takdirde Exception alabilirsiniz.
FileMode.OpenorCreate: Eğer dosya varsa açacak, yoksa yeni bir tane üretecek.
FileMode.Truncate: Bu modda dosyanın mutlaka açık olması lazım, açık olan dosyanın içindeki
bilgileri siliyor.
FileStream sınıfının üretici fonksiyonun üçüncü parametresi ise, FileAccess türünden bir enum ile dosyaya erişim modunu istiyor. FileAccess’de eğer okuma yapacaksanız .Read, yazma yapacaksanız .Write, hem okuma hem de yazma yapacaksanız .ReadWrite. FileStream’ı tanımladıktan sonra işimiz artık daha da kolay. Bu sınıfın bize sağladı fs.Read(…) ve fs.Write(…) fonksiyonları ile dosyadan veri okuma ve veri yazma yapabiliriz. Şimdi “…” bunları biraz açalım. Önce okuma fonksiyonundan başlayalım;
int [Okunan Byte Sayısı] fs.Read(byte[] dizi, int Indis, int Yazılacak Byte Sayısı): İlk parametre bir byte dizisi dosyadan okuduğunuz verileri bu byte dizisinde olacak, ikinci parametre ise dosyadaki verileri bu dizinin kaçıncı indisinden itibaren yazacağınızı, üçüncü parametre de ise kaç karakter okunacağını istiyor. Geri dönüş değeri ise dosyadan kaç karakter okuduğunuz.
void fs.Write(byte[] dizi, int Indis, int Yazılacak Byte Sayısı): İlk parametre bir byte dizisi dosyaya yazacağınız veriler bu byte dizisinde olacak, ikinci parametre ise dizideki verileri kaçıncı indisinden itibaren yazacağınızı, üçüncü parametre de ise belirtiğiniz indisten itibaren kaç karakter yazacağınızı istiyor.
Dikkatini çektiyse burada hiç string türünden birşey yok, yani siz dosyaya “Deneme yazısı” yazmak istediğinizde bunu bir byte dizisine atmanız gerekiyor. Elbette bu string türünden ifadeyi direk dosyaya yazan bir fonksiyon var ama biz gelin önce bu string’i byte dizisine çevirelim sonra da dosyaya yazalım;
FileStream fs = new FileStream(@"C:\dosya.txt", FileMode.Create, FileAccess.Read);
byte[] dosyaYazisi = ASCIIEncoding.ASCII.GetBytes("Deneme yazısı");
fs.Write(dosyaYazisi, 0, dosyaYazisi.Length);
FileStream fs = new FileStream(@"C:\dosya.txt", FileMode.Create, FileAccess.Read); byte[] dosyaYazisi = ASCIIEncoding.ASCII.GetBytes("Deneme yazısı"); fs.Write(dosyaYazisi, 0, dosyaYazisi.Length);
Evet hepsi bu kadar ama her seferinde yazacağınız veriyi ASCIIEnco…. sınıfında byte’a dönüştürüp sonra yazmak zor olsa gerek. Gelin bunu biz .Write(“Deneme yazısı”) şeklinde yapalım. .Net kütüphanesinde birden fazla okuma ve yazma yapan sınıflar var; StreamWriter, BinaryWriter, StreamReader, BinaryReader gibi sınıflar bu konuda imdadımıza yetişiyor. Bu sınıfların hepsi FileStream türünden bir nesne istiyor, buradan da şunu anlıyoruz biz dosyadan okuma yazma yapacaksak hemen bir tane FileStream tanımlayacağınız. StreamReader ve StreamWriter sınıflarını burada anlatacağım Binary versiyonunu size bırakıyorum :),
StreamWriter sw = new StreamWriter(fs); bu şekilde tanımlama yaptığınız takdirde StreamWriter nesnesini, FileStream türünden tanımladığınız nesnenin tüm özellikleri ile erişebilirsiniz. StreamWriter adından da anlaşılacağı gibi dosyaya yazma yapan bir fonksiyon ve bunun için iki tane kullanışlı fonksiyonu var; .Write(…), .WriteLine(…), WriteLine dediğiniz takdirde “sw.NewLine” özelliğine belirtiğiniz karakteri sonuna ekler. (Hiçbirşey belirtmezseniz ‘\n’ vardır. Yani alt satıra geçer 😉 ).
.Write(…) fonksiyonu neredeyse bütün veri türlerini kabul ediyor ve dosyaya yazıyor. Bu fonksiyonu Console.Write(…) fonksiyonun aynısı olarak düşünebilirsiniz.
StreamReader sınıfını ise tahmin edeceğiniz gibi; StreamReader sr = new StreamReader(fs) şeklinde tanımlıyoruz. StreamReader’da bize dosyadan verileri okumakta yardımcı olan bir sınıf ve kullanışlı olan birkaç .Read fonksiyonu var; .Read(…), .ReadLine(…), .ReadToEnd(…).
.Read(…): Bu fonksiyonun iki türü var eğer .Read() olarak kullanırsanız size int türünden bir değer dönecektir. İkinci türü ise FileStream sınıfındaki .Read(…) ile aynı.
.ReadLine(…): Bu fonksiyon dosyadan sadece tek bir satır okur. Eğer satır satır okuma yapacaksanız bu fonksiyonu kullanabilirsiniz.
.ReadToEnd(…): Bu fonksiyon dosyanın başından sonuna kadar okur ve bunu bir string türünden geri döndürür.
Son olarak şunu da belirtmek istiyorum; FileStream sınıfının önemli bir fonksiyonuda .Seek(…) bu fonksiyonu kullanarak dosya imlecini istediğiniz yere set edebilirsiniz. Kullanımı ise fs.Seek(3, SeekOrigin.Begin) böyle dedikten sonra okuma yaparsanız eğer size (“eme Yazısı”) dönecektir.
Gördüğünüz gibi dosyadan okuma ve yazma işlemi .Net ile çok kolay. Umarım buradaki bilgiler sizlere faydalı olur,
Görüşmek üzere,
Hepinize kolay gelsin, iyi çalışmalar…
Posted by Burak Özkan C# Permalink
Etkinlik Takip Programı!	Imagine Cup 2011, Takım Arkadaşı Arıyoruz
6 Responses to C# ile Dosyadan Okuma-Yazma İşlemleri!
Bir cevap yazın Cevabı iptal et
Your email address will not be published. Please enter your name, email and a comment.
Yorum
İsim *
E-posta *
İnternet sitesi
Bir dahaki sefere yorum yaptığımda kullanılmak üzere adımı, e-posta adresimi ve web site adresimi bu tarayıcıya kaydet.
Burak ÖZKAN; 2008 yılı, İstanbul Üniversitesi End. Otomasyon bölümü ve 2012 Kadir Has Üniversitesi Bilgisayar Müh. bölümü mezunu, iyi bir yazılımcı olmak için çok çalışıyor ve çalışmaya devam edecek.
Follow @brkzkn
Kategoriler
Android (2)
Ayın Konusu (3)
C# (21)
Duyuru (12)
Edebiyat (5)
Genel (30)
IoT (4)
Online Data Manager (3)
Program (2)
Sosyal Medya (2)
SQL Server (7)
Teknoloji Haberleri (1)
Visual Studio (6)
Son Yazılar
Ocak Ayı – Kültür Sanat Faaliyetlerim
Merhaba 2020 – Nerede Kalmıştık?
Raspberry Pi 2 – İlk Windows IoT Uygulaması
Nesnelerin İnterneti Zirvesinin Ardından
Raspberry Pi 2 – Windows IoT Core Kurulumu
Son Yorumlar
C# Serial Port Bileşeni! için Ömer Anar
SQL Server’a Uzak Bilgisayardan Erişim! için ogün
Online Data Manager: ZigBee Protokolü ve xBee için Cansel Muti
Setup dosyası yapma! için Mehmet Can
C# ile Dosyadan Okuma-Yazma İşlemleri! için Aslı
Etiketler
.net .Net Micro Framework android Ayın Konusu Bilgilendirme C# Diğer Duyuru ELECO Facebook film Futurist Futurizm G-Mail Help iFrame Imagine Cup Imagine Cup 2011 internet of things iot kablosuz hasta takip Kadir Has Üniversitesi Microsoft Microsoft Imagine Cup Microsoft Student Partner Microsoft Student Partner 2010 Microsoft Öğrenci Ortağı Ms-Sql Server MSP multithread nesnelerin interneti Proje raspberry pi 2 SerialPort The Futurist threading Unit Test Visual Studio windows 10 xbee XML Yardım Dosyası zigbee İpucu şiir