BİL-141 Bilgisayar Programlama I (Java)

Benzer belgeler
BM-209 Nesne Yönelimli Programlama

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 11

JAVA DA İSTİSNALAR VE DOSYA İŞLEMLERİ. Yrd. Doç.Dr. İlhan AYDIN

BİL-141 Bilgisayar Programlama I (Java)

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

BİL-141 Bilgisayar Programlama I (Java)

JAVA DA GİRİŞ/ÇIKIŞ İŞLEMLERİ. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 1

BİL-141 Bilgisayar Programlama I (Java)

// hataları işaret eden referans

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 4. Yrd.Doç.Dr.Hacer Karacan

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

Klavyeden Basit Giriş/Çıkış İşlemleri

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

EMT2226 Nesne Yönelimli Programlamaya Giriş

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

Karşılaştırma İşlemleri ve Koşullu İfadeler

Algoritma ve Programlamaya Giriş II JAVA İLE PROGRAMLAMA. Muhammet BAYKARA

Ders - 7 while döngüsü

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

Java da İşleçler, Ders #3 (4 Kasım 2009)

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

Nesne Yönelimli Programlama

Güz Yarıyılı Balıkesir Üniversitesi Bilgisayar Mühendisliği Bölümü

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Yığıtın en üstündeki öğeyi değer olarak alır; ama onu yığıttan almaz, yerinde bırakır.

Programlama Dillerinde Kullanılan Veri Tipleri

BİL132 Bilgisayar Programlama II

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

/*int sayi1, sayi2,toplam=0;

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

CharArrayReader. Kılgıladığı Arayüzler: Bildirimi: Değişkenleri (fields): java.io.reader Sınıfından Kalıtsal Gelen Değişken:

Temel Veri Türü İşlemleri

D İ Z İ L E R A R R A Y S

JAVADA DİZİ İŞLEMLERİ

ByteArrayOutputStream

GÜZ DÖNEMİ AKT105 BİLGİSAYAR PROGRAMLAMA DERSİ 4. UYGULAMA

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

BASİT VERİ TÜRLERİ, STRİNGLER, VE KONSOL GİRİŞ/ÇIKIŞ

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

String (Dizgi) İşlemleri

DOSYA İŞLEMLERİ Programlama dilleri hafta -

BMB1002 Bilgisayar Programlamaya Giriş. Dosyalar. Prof. Dr. Necmettin Kaya

BufferedReader. Kılgıladığı Arayüzler: Closeable, AutoCloseable, Readable. Altsınıfları: LineNumberReader. Bildirimi: public class BufferedReader

BİL-141 Bilgisayar Programlama I (Java)

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Soru 1: Fahrenheit cinsinden verilen sıcaklığı Kelvin'e çeviren bir program yazınız. Aşağıdaki dönüşüm formülünü kullanabilirsiniz:

Pascalda oluşturulacak dosyalar değişkenler gibi programın başında tanımlanır.

Java da Program Denetimi ve Operatörler. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 1

BBS515 Nesneye Yönelik Programlama. Ders 2 Zümra Kavafoğlu

BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ

BBS515 Nesneye Yönelik Programlama. Ders 2 Zümra Kavafoğlu

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

Java String İşlemleri

Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31

GÜZ DÖNEMİ AKT105 BİLGİSAYAR PROGRAMLAMA DERSİ 6. UYGULAMA

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA

1 - Button Kontrolu Nasıl Yapılır?

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Nesne Yönelimli Programlama

InputStream Sınıfı. Class InputStream. java.io. java.lang.object java.io.inputstream. Kılgıladığı Arayüzleri: Closeable, AutoCloseable

3.Hafta. . Kontrol Deyimleri/İfadeler

Yrd. Doç. Dr. Caner ÖZCAN

Sınav Dağılım & IMKB Endeks

Örnek 1: Programı yazın ve çalıştırın.

1. Her marka için 3 aylık satış toplamı nedir? (Tablodaki satır toplamları)

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

Scanner Sınıfı. Class Scanner. java.util. java.lang.object java.util.scanner. Kılgıladığı Arayüzler: Closeable, AutoCloseable, Iterator<String>

Java ile Nesneye Yönelik Programlama (Object Oriented Programming)

BIL101 07/11/2012 Lab5 Programlama Sorulari

GÜZ DÖNEMİ AKT105 BİLGİSAYAR PROGRAMLAMA DERSİ 9. UYGULAMA

Programlama Dilleri III 1

HSancak Nesne Tabanlı Programlama I Ders Notları

Java da Program Denetimi ve Operatörler

Sunum İçeriği. Programlamaya Giriş

ÜNİTE NESNE TABANLI PROGRAMLAMA I İÇİNDEKİLER. Okt. Mustafa AKBUĞA HEDEFLER DOSYA VE KLASÖR İŞLEMLERİ

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 10

Nesne Yönelimli Programlama

Eln 1001 Bilgisayar Programlama I

protected Reader() Karekter akımı okumak için Reader nesnesi yaratır. Yaratılan nesne kendi kendisiyle eşzamanlı olur.

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.


Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

Bire-bir Sahiplik İlişkisi ile İlgili Sorular:

C/C++ Disk G/Ç İşlemleri. Yrd. Doç. Dr. Fehim KÖYLÜ Erciyes Üniversitesi Bilgisayar Mühendisliği Bölümü

Eln 1002 Bilgisayar Programlama II

Programlama Dilleri 3

HSancak Nesne Tabanlı Programlama I Ders Notları

Görsel Programlama 1

JAVA PROGRAMLAMAYA GİRİŞ

Transkript:

1 BİL-141 Bilgisayar Programlama I (Java) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Bilgisayar Programlamaya Giriş, A. Yazıcı, E. Doğdu, M. Özbayoğlu, M. Erten, O. Ergin kitabı kullanılarak hazırlanmıştır. Konular Akımlar ve Dosya Giriş/Çıkış İşlemleri Metin Dosyaları ve İkili Dosyalar Metin Dosyaları Giriş/Çıkış İşlemleri BufferedReader Sınıfı File Sınıfı

2 Akımlar ve Dosya Giriş/Çıkış İşlemleri Giriş/Çıkış (G/Ç) bir programa giren ve çıkan verilerin genel gösterimine denir. Bir programa giriş klavyeden veya dosyadan yapılabilir. Programın çıktısı ise ekrana veya dosyaya yapılabilir. Eğer giriş/çıkış işlemleri dosya ile iletişim gerektiriyorsa Java da bu işlemlere yönelik hazırlanmış özel sınıf ve nesnelerin kullanılması gerekir. 3 Akımlar ve Dosya Giriş/Çıkış İşlemleri Akımlar (Streams) Java da dosya işlemleri akımlar aracılığıyla yapılır. Eğer veriler dışarıdan programa geliyorsa buna giriş akımı (input stream), programdan dışarı gidiyorsa buna çıkış akımı (output stream) denir. Java da akım programa giriş/çıkış yapan verilerin kaynaklarını (klavye, dosya) ve varış noktalarını (ekran, dosya) düzenleyen nesne olarak görev yapmaktadır. System.out nesnesi verileri ekrana yazan bir çıkış akımına, Scanner nesnesi de verileri klavyeden alan bir giriş akımına örnek olarak gösterilebilir. Dosya G/Ç işlemlerinin yapılabilmesi için giriş ve çıkış akımları dosya ile ilişkilendirilirler. 4

3 Akımlar ve Dosya Giriş/Çıkış İşlemleri Dosya G/Ç işleminin gerekliliği Program sona erdiğinde kullanılan veriler kaybolur. Verileri kaybetmemek için dosyada saklanması gereklidir. Aynı şekilde klavyeden girilen verilerin de program çalıştırıldığında tekrar tekrar girilmesi yerine kaydedilip tekrar çalıştırıldığında okunarak elde edilmesi gerekir. 5 Konular Akımlar ve Dosya Giriş/Çıkış İşlemleri Metin Dosyaları ve İkili Dosyalar Metin Dosyaları Giriş/Çıkış İşlemleri BufferedReader Sınıfı File Sınıfı

4 Metin Dosyaları ve İkili Dosyalar Bilgisayar ortamında dosyalarda saklanan veriler 0 ve 1 lerden oluşur. Dosyalar içerik olarak metin dosyası ve ikili dosya olmak üzere iki çeşittir. Metin dosyaları System.out nesnesi ile kaydedilen ve herhangi bir metin düzenleyicisi tarafından içeriği okunabilen dosyalardır. İkili dosyalar ise bilgilerin ikili olarak saklandığı ve görüntü, fotoğraf, müzik veya video gibi özel yapıya sahip dosyalardır. Bu dosyalar metin düzenleyici programlarla açılamazlar. 7 Metin Dosyaları ve İkili Dosyalar - devam Metin dosyaları kullanıcıların okuyabilmesi, ikili dosyalar ise bilgisayarların okuyabilmesi için hazırlanmış olarak düşünebilir. Metin dosyaları herhangi bir bilgisayarda aynı şekilde okunabilir. İkili dosyaları okuyabilmek için özel programlara ihtiyaç vardır. 8

5 Konular Akımlar ve Dosya Giriş/Çıkış İşlemleri Metin Dosyaları ve İkili Dosyalar Metin Dosyaları Giriş/Çıkış İşlemleri BufferedReader Sınıfı File Sınıfı Metin Dosyaları Giriş/Çıkış İşlemleri Java da metin dosyası çıkış işlemleri Prinwriter ve FileOutputStream sınıfları kullanılarak yapılır. Dosya çıkış işlemleri için bu sınıflar ile bir output stream oluşturulur. Giriş işlemleri ise BufferedReader ve FileReader sınıfları kullanılarak yapılır. Dosya giriş işlemleri için bu sınıflar ile bir input stream oluşturulur. 10

6 Konular Akımlar ve Dosya Giriş/Çıkış İşlemleri Metin Dosyaları ve İkili Dosyalar Metin Dosyaları Giriş/Çıkış İşlemleri BufferedReader Sınıfı File Sınıfı Java da bir metin dosyasına çıktı gönderebilmek için java.io kütüphanesinin içinde yer alan PrintWriter sınıfına ait println metodu kullanılır. Java da PrintWriter sınıfını programda kullanabilmek için import java.io.* ile import edilmesi gereklidir. 12

7 // Metin dosyasi olusturulmasi örnek programi import java.io.*; import java.util.*; public class OrnekCikisMetinDosyasi public static void main(string[] args) PrintWriter ciktiakimi = null; String dosya = "ornek.txt"; try ciktiakimi = new PrintWriter (new FileOutputStream(dosya)); 13 catch (FileNotFoundException hata) System.out.println("ornek.txt dosyasi olustururken hata oldu"); System.exit(0); // Programdan normal çıkış. System.out.print("Bir ornek cumle giriniz:"); Scanner klavye = new Scanner(System.in); String cumle = klavye.nextline(); ciktiakimi.println("klavyeden girdiginiz cumle: " + cumle); ciktiakimi.println("dosyayi kapatabiliriz."); ciktiakimi.close(); System.out.println("Girilen cumle ornek.txt dosyasina yazildi."); Ekran Çıktısı: Bir ornek cumle giriniz: Ben Java kitabı okuyorum Girilen cumle ornek.txt dosyasina yazildi. Metin dosyasının içeriği Klavyeden girdiginiz cumle: Ben Java kitabı okuyorum Dosyayi kapatabiliriz. 14

8 Örnekte dosyaya çıktı göndermek için PrintWriter sınıfına ait ciktiakimi nesnesi oluşturulmuştur. Program bu satırı çalıştırırken eğer ornek.txt dosyası varsa, varolan dosyanın içeriği silinip yeni içerik olarak gönderilen metin yazılır. Eğer ornek.txt dosyası yoksa, yeni bir dosya oluşturulup gönderilen metin yazılır. Örnekte PrintWriter nesne kurucusuna FileOutputStream sınıfına ait bir nesne gönderilmiştir. FileOutputStream nesne kurucusu ise parametre olarak String türünde bir değer almaktadır ve dosyanın adını göstermektedir. Dosya isimleri seçerken Java da kullanılan isimlendirme kuralları değil işletim sistemleri kuralları geçerlidir. 15 Java da dosya işlemleri sırasında FileNotFoundException kural dışı durumu oluşabilir. Kural dışı durumu yakalamak için try-catch bloğu kullanılmalıdır. Buradaki kural dışı durum sadece dosya açma işlemi yapan FileOutputStream nesne kurucusundan kaynaklanabilir. Bu yüzden try bloğu içerisine alınmalıdır. FileNotFoundException tipi kural dışı durum, IOException sınıfına ait özel bir kural dışı durumdur. Aşağıdaki satır ile PrintWriter sınıfına ait println() metoduyla dosyaya yazma yapılmaktadır. ciktiakimi.println("klavyeden girdiginiz cumle: " + cumle); 16

9 PrintWriter sınıfı metotları Metot tanımı boolean checkerror () void close () void flush () void print (boolean b) void print (char c) void print (char [] s) void print (double d) void print (float f) void print (int i) Açıklama Akımın hata durumunu verir. Akımı kapatır. Akımın içeriğini temizler. Bir Boolean değişkenini akıma yazar. Bir karakter (char) değişkenini akıma yazar. Bir karakter (char) dizisini akıma yazar. Bir ondalıklı sayı (double) değişkenini akıma yazar. Bir ondalıklı sayı (float) değişkenini akıma yazar. Bir tamsayı (int) değişkenini akıma yazar. 17 PrintWriter sınıfı metotları - devam Metot tanımı void print (long l) void print (Object o) void print (String s) void println() void println(boolean b) void println(char c) void println(char [] s) void println(double d) Açıklama Bir büyük tamsayı (long) değişkenini akıma yazar. Bir nesneyi akıma yazar. Nesnenin tostring() metodunu kullanır. Bir dizgi (String) değişkenini akıma yazar. Satır sonu yaparak yeni satıra geçer. Bir Boolean değişkenini akıma yazar ve satırı sona erdirir. Bir karakter (char) değişkenini akıma yazar ve satırı sona erdirir. Bir karakter (char) dizisini akıma yazar ve satırı sona erdirir. Bir ondalıklı sayı (double) değişkenini akıma yazar ve satırı sona erdirir. 18

10 PrintWriter sınıfı metotları - devam Metot tanımı void println(float f) void println(int i) void println(long l) void println(object o) void println(string s) void seterror() void write(char [] buf) Açıklama Bir ondalıklı sayı (float) değişkenini akıma yazar ve satırı sona erdirir. Bir tamsayı (int) değişkenini akıma yazar ve satırı sona erdirir. Bir büyük tamsayı (long) değişkenini akıma yazar ve satırı sona erdirir. Bir nesneyi akıma yazar ve satırı sona erdirir. Bir dizgi (String) değişkenini akıma yazar ve satırı sona erdirir. Eğer bir hata gerçekleşmişse bu metot hata olduğunu belirtir. Bir karakter (char) dizisini akıma yazar. 19 PrintWriter sınıfı metotları - devam Metot tanımı void write(char [] buf, int off, int len) void write(int c) void write(string s) void write(string s, int off, int len) Açıklama Bir karakter (char) dizisinin off ile belirtilen sıradaki karakterinden başlar len ile belirtilen kadar karakterini akıma yazar. Tek bir karakteri (char) akıma yazar. Bir dizgiyi (String) akıma yazar. Bir dizginin (String) off ile belirtilen sıradaki karakterinden başlar len ile belirtilen kadar karakterini akıma yazar. 20

11 Java da bir dosya açıldığında, bu dosyayla ilgili işlemler bitince dosyanın close(); ile kapatılması gerekir. ciktiakimi.close(); Java da varolan bir dosya metin dosyası üzerinde değişiklik yapmak istenirse, PrintWriter sınıfına overload yapılmış başka bir kurucuyu kullanmak gerekir. ciktiakimi = new PrintWriter(new FileOutputStream(dosya, true)); İkinci parametre dosyaya ekleme yapılıp yapılmayacağını belirler. true ise dosyaya ekleme yapılacağı bildirilir. Bir dosya açılmadan önce var olup olmadığı File sınıfına ait exists() metoduyla kontrol edilir. Bir nesneye ait bilgiler tostring() ile yazdırılır. 21 Aşağıdaki örnekte Araba sınıfının tostring() metodu kullanılarak yazma işlemi yapılmıştır. // tostring() metodunun kullanimi public class Araba private String renk; private int beygirgucu; private int hiz; public Araba(String renk, int guc, int hiz) this.renk = renk; this.beygirgucu = guc; this.hiz = hiz; 22

12 public void setrenk(string renk) this.renk = renk; public void setbeygirgucu(int guc) this.beygirgucu = guc; public void sethiz(int hiz) this.hiz = hiz; 23 public String tostring() String ozellikler = null; ozellikler += Renk = + this.renk + \n ; ozellikler += Beygir Gucu = + this.beygirgucu + \n ; ozellikler += Hiz = + this.hiz + \n ; return (ozellikler); 24

13 public boolean equals(araba yeniaraba) boolean ayniaraba = false; // Iki arabanin bütün özellikleri ayni ise // bu iki araba birbirine esittir diyebiliriz. if (yeniaraba.renk == this.renk) if (yeniaraba.beygirgucu == this.beygirgucu) if (yeniaraba.hiz == this.hiz) ayniaraba = true; return ayniaraba; 25 Araba sınıfının tostring() metoduyla dosyaya yazma işlemi. // tostring() metoduna sahip Araba sinifinin kullanimi import java.io.*; public class DeneAraba public static void main(string[] args) PrintWriter ciktiakimi = null; String dosya = "ornekaraba.txt"; try ciktiakimi = new PrintWriter (new FileOutputStream(dosya)); 26

14 catch (FileNotFoundException hata) System.out.print("ornekAraba.txt dosyasi "); System.out.println("olustururken hata oldu"); System.exit(0); Araba ferrari = new Araba("kirmizi",450,320); Araba fiat = new Araba("beyaz",75,145); Araba opel = new Araba("mavi",150,200); ciktiakimi.println("ferrari ozellikleri"); ciktiakimi.println(ferrari.tostring()); ciktiakimi.println(); ciktiakimi.println("fiat ozellikleri"); ciktiakimi.println(fiat.tostring()); ciktiakimi.println(); ciktiakimi.println("opel ozellikleri"); 27 ciktiakimi.println(opel.tostring()); ciktiakimi.println(); System.out.print("Araba ozellikleri ornekaraba.txt"); System.out.println(" dosyasina yazildi."); Çıktı: Araba özellikleri ornekaraba.txt dosyasina yazildi. Metin dosyasının içeriği Ferrari özellikleri Renk: kirmizi Beygir gucu: 450 Hiz: 320 Fiat özellikleri Renk: beyaz Beygir gucu: 75 Hiz: 145 Opel özellikleri Renk: mavi Beygir gucu: 150 Hiz: 200 28

15 Konular Akımlar ve Dosya Giriş/Çıkış İşlemleri Metin Dosyaları ve İkili Dosyalar Metin Dosyaları Giriş/Çıkış İşlemleri BufferedReader Sınıfı File Sınıfı BufferedReader Sınıfı Java da bir metin dosyasından okuma yapmak için java.io kütüphanesinin içinde yer alan BufferedReader sınıfı kullanılır. BufferedReader sınıfına ait bir nesne oluştururken metin dosyasının adı doğrudan girilmez. FileReader adlı bir sınıftan oluşturulan nesne kullanılır. Metin dosyasından bir satır okumak için readline() metodu kullanılır. 30

16 BufferedReader Sınıfı // Metin dosyasi giris örnegi import java.io.*; public class OrnekGirisMetinDosyasi public static void main(string[] args) try BufferedReader girisakimi = new BufferedReader(new FileReader("ornek.txt")); String satir = null; satir = girisakimi.readline( ); System.out.print("ornek.txt dosyasinin 1. satirinda:"); System.out.println("\"" + satir + "\" yazmaktadir. "); satir = girisakimi.readline( ); System.out.print("ornek.txt dosyasinin 2. satirinda:"); System.out.println("\"" + satir + "\" yazmaktadir."); girisakimi.close( ); 31 BufferedReader Sınıfı catch(filenotfoundexception e) System.out.print("ornek.txt dosyasi bulunamadi"); System.out.println("veya acilamadi."); catch(ioexception e) System.out.print("ornek.txt dosyasindan veri girisinde"); System.out.println(" hata olustu."); Ekran Çıktısı: ornek.txt dosyasinin 1.satirinda Bir ornek cumle giriniz: Ben Java kitabi okuyorum yazmaktadir. ornek.txt dosyasinin 2.satirinda Dosyayi kapatabiliriz. yazmaktadir. Metin dosyasının içeriği Bir ornek cumle giriniz: Ben Java kitabi okuyorum Dosyayi kapatabiliriz. 32

17 BufferedReader Sınıfı Metin girdisi elde etme işlemi yapısal olarak metin çıktısı elde etme işlemine benzemektedir. Metin girdisinde iki ayrı kural dışı durum oluşabileceğinden try bloğuyla iki ayrı catch bloğu kullanılmıştır. Dosyanın açılamaması durumunda FileNotFoundException, dosya okuma hatası oluşması durumunda ise IOException kural dışı durum oluşur. 33 BufferedReader Sınıfı BufferedReader sınıfı metin dosyasından bir satır okur ancak satırın içeriği hakkında bilgi vermez. Okunan satır String olarak saklanır. Okunan satırın parçalara ayrılıp ayrı ayrı kullanılması için StringTokenizer adındaki sınıf kullanılır. StringTokenizer st = new StringTokenizer("this is a test"); while (st.hasmoretokens()) System.out.println(st.nextToken()); Bir metin dosyasından tüm bilgilerin okunması için döngü oluşturulur. Tüm satırlar bitince readline() metodu null değeri döndürür. 34

18 BufferedReader Sınıfı //Döngü kullanarak giriş yapılan bir metin dosyasi örnegi import java.io.*; public class OrnekGirisMetinDosyasi public static void main(string[] args) try BufferedReader girisakimi = new BufferedReader(new FileReader("ornek.txt")); String satir = null; int sayac = 0; satir = girisakimi.readline( ); while (satir!= null) sayac++; System.out.print("ornek.txt dosyasinin " + sayac); System.out.print("satirinda:" + sayac); System.out.println("\"" + satir + "\" yazmaktadir. "); satir = girisakimi.readline( ); 35 BufferedReader Sınıfı girisakimi.close( ); catch(filenotfoundexception e) System.out.print("ornek.txt dosyasi bulunamadi"); System.out.println("veya acilamadi."); catch(ioexception e) System.out.print("ornek.txt dosyasindan veri girisinde"); System.out.println(" hata olustu."); 36

19 Konular Akımlar ve Dosya Giriş/Çıkış İşlemleri Metin Dosyaları ve İkili Dosyalar Metin Dosyaları Giriş/Çıkış İşlemleri BufferedReader Sınıfı File Sınıfı File Sınıfı Java da bir metin dosyası giriş ve çıkış işlemleri PrintWriter ve BufferedReader sınıfları kullanılarak yapılır. Ancak bu sınıflar dosyanın genel özellikleriyle ilgili meotlara sahip değildirler. Bir klasörde herhangi bir dosyanın olup olmadığı, okunup okunamayacağı gibi durumlar File sınıfı ile kontrol edilebilir. 38

20 BufferedReader Sınıfı //Döngü ve File kullanarak giris yapilan bir metin dosyasi örnegi import java.io.*; import java.util.*; public class OrnekGirisMetinDosyasi2 public static void main(string[] args) do System.out.println("Okumak istediginiz dosya adini giriniz."); Scanner klavye = new Scanner(System.in); String dosya = klavye.next(); File dosyanesnesi = new File(dosya); if (!dosyanesnesi.exists()) System.out.println("Bu isimde bir dosya yok."); else if (!dosyanesnesi.canread()) System.out.println("Bu dosya okunamiyor."); while ((!dosyanesnesi.exists())!dosyanesnesi.canread())); 39 BufferedReader Sınıfı try BufferedReader girisakimi = new BufferedReader(new FileReader(dosyaNesnesi)); String satir = null; int sayac = 0; satir = girisakimi.readline(); while (satir!= null) sayac++; System.out.print("ornek.txt dosyasinin " + sayac); System.out.print(". satirinda:"); System.out.println("\"" + satir + "\" yazmaktadir."); satir = girisakimi.readline( ); girisakimi.close( ); 40

21 BufferedReader Sınıfı catch(filenotfoundexception e) System.out.print("ornek.txt dosyasi bulunamadi"); System.out.println("veya acilamadi."); catch(ioexception e) System.out.print("ornek.txt dosyasindan veri girisinde"); System.out.println(" hata olustu."); 41 File Sınıfı Örnekte BufferedReader nesne kurucusuna, parametre olarak gönderilen FileReader nesne kurucusu gönderilmiştir. FileReader nesne kurucusuna dosya ismi olarak String gönderilebileceği gibi, bir File nesnesi de (örnekte dosyanesnesi) gönderilebilir. 42

22 File sınıfının bazı metotları Metot tanımı boolean exists() boolean canread() boolean canwrite() boolean delete() long length() String getname() String getpath() Açıklama Metodu çağıran dosyanın klasörde olup olmadığını kontrol eder. Metodu çağıran dosyanın okunup okunamayacağını dosya özelliklerine göre belirler. Metodu çağıran dosyaya yazaılıp yazılamayacağını dosya özelliklerine göre belirler. Metodu çağıran dosyayı silmeye çalışır. Silme başarılı ise true değilse false döndürür. Metodu çağıran dosyanın byte cinsinden uzunluğunu verir. Metodu çağıran dosyanın ismini verir. Metodu çağıran dosyanın bilgisayar üzerindeki yolunu (path) verir. 43