C# Giriş-Çıkış İşlemleri: Veri Yazdırma ve Okuma rehberimizin yardımıyla C# programlama dilinde veri işlemeyi öğrenin Dosya açma, yazma ve okuma işlemlerini adım adım öğrenin ve programlarınızda verileri nasıl yöneteceğinizi keşfedin
Bu makalede, C# programlama dilinde veri yazdırma ve okuma işlemleri üzerinde durulacaktır. Bu işlemler, programlarda kullanıcının veri girdiği ya da programın çıktılarını kullanıcının görebildiği durumlarda sıklıkla kullanılır. Veri girişi ve çıktısı genellikle Console ekranı yani konsol penceresi üzerinden yapılır. Bu nedenle ilk olarak, Console sınıfı içerisinde yer alan WriteLine() ve Write() metotları ile nasıl veri yazdırabileceğimizi öğreneceğiz.
Console.WriteLine() ve Console.Write()
C# programlama dilinde veri yazdırma işlemleri, Console sınıfının hazır olarak sunulan WriteLine() ve Write() metotlarıyla gerçekleştirilir. Console.WriteLine() metodu, kendisine verilen veriyi yeni bir satıra yazdırırken, Console.Write() metoduysa kendisine verilen veriyi aynı satırda yazdırır.
Console.WriteLine() ve Console.Write() metotları, birden fazla parametre alabilecek şekilde tasarlanmıştır. Bu sayede, metot içinde verilen parametreler arasına virgül koyularak, aynı satırda ya da alt alta veri yazdırması yapılabilir. Ayrıca, Console.WriteLine() metodu içerisinde kullanılan \n ifadesi ise, yeni bir satıra geçmek için kullanılır.
Örneğin,
Metot Kullanımı | Çıktı |
---|---|
Console.WriteLine("Merhaba Dünya!") | Merhaba Dünya! (yeni bir satır) |
Console.Write("Merhaba "); Console.WriteLine("Dünya!") | Merhaba Dünya! (aynı satırda) |
Console.WriteLine("Adım: {0} Soyadım: {1}", ad, soyad) | Adım: Ali Soyadım: Yılmaz |
Bu örnekte, ilk satırda Console.WriteLine() metodu kullanılarak "Merhaba Dünya!" ifadesi yeni bir satıra yazdırılırken, ikinci satırda ise Console.Write() metodu kullanılarak, "Merhaba " yazdırılıp, aynı satırda Console.WriteLine() metodu kullanılarak "Dünya!" yazdırılmıştır. Üçüncü satırda ise Console.WriteLine() metodu içinde formatlama kullanılarak, iki değişkenin yazdırılması gerçekleştirilmiştir.
Console.ReadLine()
C# programlama dilinde veri okuma işlemi, kullanıcı tarafından belirtilen bir kaynaktan gerçekleştirilir. Bu işlem, Console sınıfının ReadLine() metodu kullanılarak yapılmaktadır. ReadLine() metodu, kullanıcının veri girerek bir satırda ENTER tuşuna basmasını bekler ve girilen veriyi bir string olarak alır.
Örneğin kullanıcının bir sayı girmesi isteniyorsa, Console.WriteLine() metodu kullanılarak bir mesaj yazdırılarak kullanıcının bir sayı girmesi istenir. Ardından ReadLine() metodu kullanılarak kullanıcının girdiği sayı string olarak alınır. Ancak bu veri tipi, işlenebilmesi için bir sayı veri tipine dönüştürülmelidir.
Bu noktada Parse() metodu kullanılarak string veri tipi istenilen bir sayı veri tipine dönüştürülebilir. Ancak kullanıcının hatalı bir giriş yapması durumunda programın çökmesini engellemek için TryParse() metodu kullanılması önerilir. Bu metot, verinin istenilen veri tipine dönüştürülmesine çalışırken bir hata oluşması durumunda hata mesajı gösterir.
Parse() Metodu
C# programlama dili, string veri türündeki bir değeri istenilen veri türüne dönüştürmek için Parse() metotunu sunuyor. Bu metot, bir string ifadeyi belirtilen türe dönüştürür. Örneğin, bir string ifadeyi integer türüne veya double türüne dönüştürmek için kullanılabilir.
Parse() metodu kullanırken, dönüştürme işlemi başarısız olduğunda bir özel durum fırlatılarak program sonlandırılmaz. Bunun yerine, try-catch yapısı kullanılmalıdır. Ayrıca, hatalı değerlerin neden olduğu istisnai durumları özel olarak ele almak için TryParse() yöntemi kullanılabilir.
Metot İsmi | Açıklama |
Parse() | Bir string ifadeyi belirtilen veri türüne dönüştürür. |
TryParse() | Bir string ifadeyi belirtilen veri türüne dönüştürür ve bir hata durumunda false döndürür. |
Parse() metodu ayrıca, önceden belirlenmiş formatlarda string ifadeleri veri türlerine dönüştürmek için kullanılabilir. Örneğin, bir tarih ve saat ifadesini DateTime türüne dönüştürmek için kullanılabilir. Aşağıdaki örnek, "2022-01-01 16:30" gibi bir formatı DateTime türüne dönüştürür:
string tarihSaat = "2022-01-01 16:30";DateTime dateTime = DateTime.ParseExact(tarihSaat, "yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture);Console.WriteLine(dateTime);
Bu örnekte, ParseExact() yöntemi, dönüştürülecek string ifadesini, dönüştürülecek DateTime türünü ve dönüştürme işlemi için kullanılacak format string'ini alır.
Parse() metodu, C# programlama dilinde veri türlerini string veri türüne dönüştürmek için kullanılırken, TryParse() metodu string türündeki bir değeri istenilen veri türüne dönüştürüp, hata oluşması durumunda hata mesajı göstermek için kullanılır. Bu sayede programın daha güvenli çalışması sağlanmış olur.
TryParse() Metodu
TryParse() metodu, C# programlama dilinde string veri türündeki bir değeri istenilen veri türüne dönüştürürken hata oluşması durumunda hata mesajı gösterir. Bu metot, Convert sınıfının Parse() metodu gibi bir işlev görür, ancak hata mesajı ile donatılmış olması açısından daha avantajlıdır.
TryParse() metodu, üç parametre alır. İlk parametrede, dönüştürülecek olan string veri türü belirtilir. İkinci parametre ise dönüştürülmüş verinin tutulacağı değişkenin adıdır. Üçüncü ve son parametre ise eğer tip dönüşüm işlemi başarısız olursa, geri dönülecek bir hata mesajıdır.
Aşağıdaki örnekte, string türündeki bir değişkenin integer türüne dönüştürülmesi işlemi TryParse() metodu kullanılarak gerçekleştirilmiştir:
```string input = "10";int result;if (int.TryParse(input, out result)){ Console.WriteLine($"Girilen değer: {result}");}else{ Console.WriteLine("Dönüştürme başarısız oldu.");}```Bu örnekte, input değişkeni integer türüne dönüştürülürken başarılı bir şekilde tamamlandı ve ekrana "Girilen değer: 10" yazdırıldı. Ancak, eğer input değişkeni integer türünde bir veri içermiyorsa, işlem başarısız olacaktır ve ekrana "Dönüştürme başarısız oldu." yazdırılacaktır.
StreamWriter Sınıfı
StreamWriter sınıfı, C# programlama dilinde dosyaya karakter ya da metin tabanlı veriler yazmak için kullanılır. Bu sınıf, System.IO ad alanında tanımlanmıştır ve StreamWriter sınıfından yeni bir örnek oluşturulduğunda, belirtilen dosyaya yazma işlemi gerçekleştirilir. StreamWriter sınıfı, Write() ve WriteLine() metotları ile dosyaya veri yazdırma işlemi yapılır.
StreamWriter sınıfının kullanımı oldukça kolaydır. Basit bir örnek vermek gerekirse:
Kod | Açıklama |
---|---|
using System;using System.IO;class Program{ static void Main(string[] args){ string dosyaAdi = "ornek.txt"; StreamWriter writer = new StreamWriter(dosyaAdi); writer.WriteLine("Bu örnek bir metindir."); writer.Close(); Console.WriteLine("Veri dosyaya yazıldı."); }} | Bu örnekte StreamWriter sınıfından bir örnek oluşturuldu ve örneğin yazacağı dosyanın adı belirtilerek dosya oluşturuldu. WriteLine() metodu ile dosyaya veri eklendi ve işlem tamamlandı. |
StreamWriter sınıfı, programlama dillerinde dosyaya veri yazmak için en sık kullanılan sınıflardan biridir. Dosya işlemlerinde kolaylık sağlayarak, dosyaların yazım işlemlerinin tek bir yerde yapılabilmesini sağlar. Dosyaya yazılan verilerin Türkçe karakter desteği gibi farklı özellikleri de bulunmaktadır.
StreamReader Sınıfı
StreamReader sınıfı, .NET Framework'te dosyadan karakter veya metin tabanlı veriler okumak için kullanılan bir sınıftır. StreamReader sınıfını kullanarak bir dosyadan veri okumak için, StreamReader sınıfından bir nesne oluşturulmalı ve bu nesne, okunacak dosyanın yolunu ve dosyanın açılacağı modu belirten StreamReader sınıfının yapıcı metoduna parametre olarak verilmelidir.
Bu sınıf, TextReader sınıfından miras alınarak tasarlanmıştır ve StreamReader sınıfı aynı işlevleri yerine getirir ancak bazı ek özelliklere de sahiptir. StreamReader sınıfının özellikleri şunlardır:
- Daha hızlı ve verimli dosya okuma işlemi yapabilmesi için dahili tamponlama özelliğine sahiptir.
- Çoklu kodlamaları destekleyebilir.
- Açık dosyaları okumak için kullanılan FileMode.Open metodu kullanılabilir.
StreamReader sınıfı, özellikle metin tabanlı dosyaların okunmasında oldukça yararlıdır. Dosyadan gelen metin verileri, StreamReader sınıfı ile okunarak bir diziye veya değişkene atanabilir veya doğrudan işlenebilir.
BinaryWriter Sınıfı
BinaryWriter sınıfı, C# programlama dilinde byte ya da binary verilerin dosyaya yazılabilmesi için kullanılır. Bu sınıf, StreamWriter sınıfının aksine karakter ya da metin tabanlı veriler değil, binary değerlerin yazılması amacıyla kullanılır.
BinaryWriter sınıfını kullanarak öncelikle dosya yolu belirtilir ve bu dosya açılır. Ardından, dosyaya veri yazmak için Write() metodu kullanılır. Bu metot, belirtilen dosyaya byte ya da binary veri yazmak için parametre olarak veri tipi alır. Örneğin, bir integer türündeki veriyi binary olarak yazmak için Write() metoduna int tipinde bir değer verilir. Aynı şekilde, bool, long, double gibi tüm veri tipleri için de Write() metodu kullanılır.
Aşağıdaki örnek kodda, "binaryDosya.dat" isimli bir dosya oluşturularak, BinaryWriter sınıfı kullanılarak verilerin bu dosyaya yazılması gösterilmektedir:
using System;using System.IO;class Program{ static void Main(string[] args) { using (BinaryWriter writer = new BinaryWriter(File.Open("binaryDosya.dat", FileMode.Create))) { writer.Write(1); writer.Write(2.5); writer.Write(true); writer.Write("BinaryWriter sınıfı kullanarak binary veriler dosyaya yazmak mümkündür."); } }}
Bu örnek kodda, oluşturulan dosyaya sırasıyla bir integer değer, double bir değer, bir bool değer ve bir string değer yazılmaktadır. BinaryWriter sınıfı, sadece dosyaya veri yazarken değil, aynı zamanda dosyadan okuma işlemlerinde de kullanılır.
BinaryReader Sınıfı
BinaryReader sınıfı, bir dosyadaki byte ya da binary verilerin okunmasını sağlar. Dosya işlemleri için FileStream sınıfından türetilir ve bir FileStream nesnesi veya bir dosya adı alarak oluşturulabilir.
BinaryReader sınıfının, başlıca kullanılan metotları şunlardır:
- Close(): Binary dosyayı kapatır.
- Dispose(): BinaryReader sınıfı tarafından kullanılan tüm kaynakları serbest bırakır.
- PeekChar(): Dosyanın bir sonraki karakterini okur ve dosyayı değiştirmez.
- Read(): Binary dosyadan bir byte okur ve int tipinde geri döndürür.
- ReadBoolean(): Binary dosyadan bir boolean değer okur ve geri döndürür.
- ReadBytes(int count): Binary dosyadan count sayısı kadar byte okur ve bir byte dizisi olarak geri döndürür.
- ReadChar(): Binary dosyadan bir karakter okur ve geri döndürür.
- ReadChars(int count): Binary dosyadan count sayısı kadar karakter okur ve bir karakter dizisi olarak geri döndürür.
- ReadDecimal(): Binary dosyadan bir decimal değer okur ve geri döndürür.
- ReadDouble(): Binary dosyadan bir double değer okur ve geri döndürür.
- ReadInt16(): Binary dosyadan bir 16-bit integer değer okur ve geri döndürür.
- ReadInt32(): Binary dosyadan bir 32-bit integer değer okur ve geri döndürür.
- ReadInt64(): Binary dosyadan bir 64-bit integer değer okur ve geri döndürür.
- ReadSingle(): Binary dosyadan bir single değer okur ve geri döndürür.
- ReadString(): Binary dosyadan bir string değer okur ve geri döndürür.
BinaryReader sınıfı, dosyadan byte ya da binary verilerin okunması için oldukça kullanışlıdır. Ancak, dosyanın boyutu büyük olduğunda yavaş çalışabilir. Unutulmamalıdır ki, binary dosya okuma işlemi her zaman yavaşlatıcı bir faktör olabilir.