DOSYA GİRİŞ / ÇIKIŞ (I/O) İŞLEMLERİ

Giriş / Çıkış bir programa giren ve çıkan verilerin genel gösterimine denir. Programa giriş klavyeden veya dosyadan yapılabilir. Çıkış ise ekrana yazdırma ya da dosyaya yazdırma şeklinde yapılabilir. Dosya işlemlerinde okuma ve yazdırma işlemleri nasıl yapılır, neden dosya işlemlerine ihtiyaç vardır, dosyalar da veriler bilgisayar ortamında nasıl saklanırlar bu sorulara yanıt bulmaya çalışacağız ve örneklerle konuyu kavramaya çalışacağız.

Dosya I/O işlemlerine neden gerek duyulur?

Klavyeden veri girişinin sağlandığı bir program yazdığınızı düşünün. Mesela öyle bir program ki çok fazla veri giriyorsunuz ve anlık olarak sonuç görüyorsunuz. İşte bu veri girişlerini tekrar tekrar girmek istersek dosya I/O işlemlerine ihtiyaç duyarız.

Eğer verilerimizi bir dosya içerisinde kaydedip program esnasında o dosya içerisindeki verileri kullanırsak hem veri kaybımız olmamış oluyor hem de eksik veri girişi yapma gibi bir durum oluşmuyor. Başka önemli bir özelliği ise bize zaman kazandırıyor. Tekrar tekrar veri girişi yaparak zaman kaybını önlemiş oluyoruz.

Veriler bilgisayarda hangi şekilde tutuluyorlar?

Bilgisayar ortamında saklanan dosyalarda yer alan veriler,sıfır ve birlerden oluşan cümleler halinde görülür. Dosyalar, metin dosyası veikili dosyalar olmak iki çeşittir. Metin dosyaları kullanıcıların okuyabilmesi için, ikili dosyalar ise bilgisayarın okuyabilmesi için hazırlanmış dosyalardır. Buna göre Java da yazılan program bir metin dosyasıdır. Aynı programın derlenip daha sonrasında derleyicinin oluşturduğu Java byte code ise ikili dosyadır.

Kaç çeşit dosyaya yazdırma ve okuma işlemi var?

Bootstrap Example
DOSYA OKUMA DOSYAYA YAZMA
FileReader FileWriter
FileInput Stream FileOutput Stream
Buffered Reader Buffered Writer
Buffered Input Stream Buffered Output Stream
Scanner Sınıfı ile dosya okuma PrintWriter ile dosyaya yazma

Yukarıda tabloda görüldüğü üzere dosya okuma ve yazma Javada birçok şekilde yapılabiliyor. Ben bu yazımda dosya okuma için Scanner sınıfını ve dosyaya veri yazmak için PrintWriter sınıfını kullanacağım. İlerleyen zamanlarda diğer okuma yazma işlemleri hakkında da ayrıca yazıyayınlayacağım. Pekâlâ, ilk olarak PrintWriter ile dosyaya veri nasıl yazılır onu öğrenelim.

PrintWriter sınıfı ile veri yazma

Java’da bir metin dosyasına çıktı gönderebilmek için java.io kütüphanesinin içerisinde yer alan PrintWriter sınıfına ait println metodu kullanılmaktadır. Dikkat edilirse dosyaya yazma veya okuma işlemi için paketimizin içerisinde Java’nın kütüphanelerinden biri olan IO kütüphanesini import ediyoruz. PrintWriter’ı daha iyi anlamak için kod üzerinde inceleme ve yorum yapalım.

ÖRNEK:

[/crayon]

Eğer oluşturulan dosyayı görüntülemek istiyorsanız; 

            Bilgisayarım\Belgelerim\NetBeansProjects\ProjeAdı 

Program çalıştığında bu şekilde sonuç almanız gerekiyor.

FileNotFoundException tipi kural dışı durum daha geniş birkural dışı durum olan IOException’in alt sınıfı olan özel bir kural dışı durumdur. FileNotFoundException dosya oluşturulmadığında, açılamadığında gerçekleşen bir durumdur.

Dikkat edilmesi gereken diğer bir nokta da metin dosyasına

          DosyayaYaz.println(“Klavyeden girdiğiniz cümle: ”+cumle);

Şeklinde gerçekleştirilen System.out.println() ile aynı metot ismine sahip, fakat PrintWriter sınıfına ait olan DosyayaYaz nesnesine ait bir metot olarak görülüyor. Bu da Java’nın temel tasarım felsefelerinden olan çok biçimliliğe uymaktadır.

Dosya işlemlerinde dikkat edilmesi gereken en önemli şeylerden biri de bir dosya oluşturulduğunda o dosyanın program kod satırlarında tekrar close() ile kapatılmasıdır. Aksi takdirde dosyamızın içerisindeki veriler değişebilir veya hiç veri kaydı olmayabilir.

Eğer var olan dosyamızın içeriğine ekleme yapmak istiyorsak

               DosyayaYaz = new PrintWriter ( new FileOutputStream ( dosya , true ) );

Kod kısmında ikinci bir parametre olan boolean değişkeni dosyaya ekleme yapılıp yapılamayacağını gösterir. True ise ekleme yapılır False ise dosyaya ekleme yapılmaz içerisindeki veriler silinip yeni veri kaydı yapılır.

Bir dosyanın var olup olmadığını ise File sınıfına ait olan exists() metodu kullanılır. Örneğin;

                File dosya = new File(“deneme.txt”);

Böyle bir .txt uzantılı dosyanın var olup olmadığını;

                İf( ! dosya.exists() ) {

                               System.out.println(“böyle bir dosya yok”);

                } else System.out.println(“Böyle bir dosya var”);

Bu şekilde anlayabiliriz.

Scanner sınıfı ile dosyadaki veriler nasıl okunur?

[/crayon]

Bu yazıyı yazarken bilgi edindiğim  kaynaklar;

  • JAVA 8 YENİ BAŞLAYANLAR İÇİN => MEHMET KİRAZLIOĞLU – SEZER TANRIVERDİOĞLU , KODLAB YAYINCILIK
  • JAVA Bilgisayar Programlamaya Giriş = > Prof. Dr. Ali Yazıcı, Doç.Dr. Erdoğan Doğdu , Y.Doç.Dr. A. Murat Özbayoğlu , Y.Doç.Dr. Y. Murat Ertem , Y.Doç.Dr. Oğuz Ergin  , PALME YAYINCILIK

Bir Cevap Yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.