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



Benzer belgeler
NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 11

Yeni G/Ç (new I/O) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 10 1

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

İÇİNDEKİLER VII İÇİNDEKİLER

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

// hataları işaret eden referans

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

ByteArrayOutputStream

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

Paket Erişimleri. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1

java.io Paketi Bölüm Java'da Giri³/Çk³ ³lemleri (I/O) Ksa Tarihçe

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

BİL-141 Bilgisayar Programlama I (Java)

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

BM-209 Nesne Yönelimli Programlama

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

Progress Barlı, FTP Dosya Upload Appleti

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

Erişim konusunda iki taraf vardır:

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

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.

J A V A D A P R O G R A M D E N E T İ M İ V E O P E R A T Ö R L E R

Nesne Yönelimli Programlama

Java String İşlemleri

Java da Program Denetimi ve Operatörler

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

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Programlama Dillerinde Kullanılan Veri Tipleri

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

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

Üst Düzey Programlama

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 2 DERSİ LAB. ÖDEVİ

PAKET ERİŞİMLERİ SINIFLARIN YENİDEN KULLANIMI. BMU-112 Algoritma ve Programlama-II Yrd. Doç.Dr. İlhan AYDIN

NESNEYE YÖNELİK PROGRAMLAMA


/*int sayi1, sayi2,toplam=0;

JAVA. public class Welcome { // class isimleri her zaman büyük harfle başlar. public static void main(string[] args){ System.out.print("Welcome"); } }

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

HSancak Nesne Tabanlı Programlama I Ders Notları

Görsel Programlama DERS 12. Görsel Programlama - Ders12/

Ders - 7 while döngüsü

JAVADA DİZİ İŞLEMLERİ

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

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

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

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Java Dersi. Altuğ Bilgin Altıntaş

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

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

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

Yrd. Doç. Dr. Caner ÖZCAN

BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI

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

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

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

Sınıfların Tekrardan Kullanılması. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 1

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

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

Nesneler için torbalar (Collections) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 1

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

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

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

Bölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16

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

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

Eln 1002 Bilgisayar Programlama II

DOSYA İŞLEMLERİ Programlama dilleri hafta -

İç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

İstisnalar (Exceptions) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 1

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

ALGORİTMA VE PROGRAMLAMA II

Arayüz (Interface) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 1

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

Dizi türündeki referanslar, dizi nesnelerine bağlanmaktadır. Dizi referansları tanımlamak bu dizinin hemen kullanılacağı anlamına gelmez...

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

M.ilkucar MAKU MYO 1

KARAR YAPILARI. Acaba hangi yöne gitmeliyim? Oturduğun yerden kalkıp, kapıya varana kadar kaç kez karar verdiniz biliyor musunuz?

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

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

Yrd. Doç. Dr. Caner ÖZCAN

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

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

8- PROGRAM YAPISAL KOMUTLARI ve. M.ilkucar MAKU MYO 1

Nesne Yönelimli Programlama

Hata Ayıklamanın Ötesi... (Assertion) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 1

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

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

İş Parçacıkları (Threads)

Temel Dosya İşlemleri. Kütük Organizasyonu 1

Mifare Kart Yazıcı/Okuyucu Modül (MFM-200)

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

JAVA API v2.0 Belge sürümü: 2.0.2

ALGORİTMA VE PROGRAMLAMA I

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 9

Java: printf() Metodu İle Çıktıyı Biçemleme

Dizi ( Array ) ve Dizgi ( String )

Visual Basic 6.0. Anadolu Üniversitesi Endüstri Mühendisliği Bölümü. Dosyalama İşlemleri. Ders Notları

Lambda İfadeleri (Lambda Expressions)

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

Transkript:

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

G/Ç işlemleriyle uygulamalara neler yaptırabiliriz... Dosya işlemleri Dosyadan okuma Dosyaya yazma Verilerin Aktarılması Ağ (network) üzerinden Nesnelerin kalıcı ortama yazılması (Serialization) Rasgele erişimli dosyalar (Random access file) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 2

Irmak (Stream) Uygulama ile kaynak arasındaki yol/bağlantı Sekizli (byte) ırmakları Karakter ırmakları Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 3

Gelen sekizli(byte) ırmakları Gelen: Kaynaktan uygulamaya doğru bir akışı belirtir. Sekizli (byte): Kurulan bağlantı içerisinden sekizli(byte) tipinde verilerin akacağını belirtir. Irmak:Kaynak ile uygulama arasında kurulan bağlantı. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 4

Sekizli Irmakları (Byte Streams) Sekizli(byte) ırmakları üzerinde iş yapabilmek için tasarlanmış sınıflar Java 1.0'dan itibaren mevcuttur. java.io.inputstream (Gelen sekizli ırmakları) java.io.outputstream (Giden sekizli ırmakları) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 5

Önemli bir nokta java.io paketinin altındaki bir sınıfın ismi eğer InputStream veya OutputStream ile bitiyorsa o zaman; Bu sınıf, sekizli ırmakları (byte streams) üzerinde işlem yapması için tasarlanmıştır sonucu çıkartılabilir. FileInputStream sınıfı BufferedOutputStream sınıfı gibi... Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 6

InputStream soyut sınıfı ve bu soyut sınıfdan türemiş alt sınıflar Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 7

InputStream soyut sınıfına ait yordamlar (methods) - I available() close() mark( int okumalimiti ) marksupported() Gelen sekizli (bayt) ırmağı içerisindeki okunabilecek olan verilerin sayısını belirtir. Bu yordam alt sınıflar tarafından iptal edilmelidir. Kaynak ile uygulama arasında kurulmuş olan bağlantıyı kapatır. İçsel dizi kullanılarak tamponlanmış olan veriler içerisinde istenilen pozisyona işaret koyar. Gelen sekizli ırmağı için mark() ve reset() yordamlarının çalışabilirliğini test eden yordamdır. Eğer bu yordamlar, okunan sekizli(byte) ırmağı üzerinde çalışabilir ise true, değilse false döner. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 8

InputStream soyut sınıfına ait yordamlar (methods) II read() read( byte[] ) read( byte[] b, int off, int len ) reset() skip( int n ) Gelen sekizli ırmağı içerisinden tek bir veriyi okuyan yordam. Bu yordamın türemiş alt sınıflar tarafından iptal edilmesi (override) gerekir. Gelen sekizli ırmağı içerisinden, parametre olarak gönderilen dizi uzunluğu kadar veriyi okur ve bunu ilgili dizinin sıfırıncı indeksinden itibaren yine o diziye yerleştirir. Gelen sekizli ırmağı içerisinden, parametre olarak gönderilen dizi uzunluğu kadar veriyi okur ve bunu ilgili diziye verilen ölçülerde (off, len) yerleştirir. mark() ile İşaretlenen pozisyona geri döndüren yordam. Gelen sekizli ırmağı içerisinden n uzunluğunda atlama yapar. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 9

read() yordamı InputStream sınıfı soyut bir sınıftır ve bu sebepten dolayı read() yordamının kullanılışını görmek için InputStream soyut sınıfından türemiş olan FileInputStream sınıfı kullanılacaktır. DosyaOkumaBir.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 10

read() yordamı Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 11

read(byte[] b) ve read(byte[] b, int off, int len) Irmak içerisindeki gelen verileri tek tek okumak yerine, bloklar (tamponlamabuffering) halinde okuyabiliriz... DosyaOkumaIki.java DosyaOkumaUc.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 12

FilterInputStream Sınıfı FilterInputStream sınıfı InputStream soyut sınıfından türemiştir. FilterInputStream sınıfının ve bu sınıftan (FilterInputStream) türemiş diğer alt sınıfların amacı, kaynaktan gelen sekizli (byte) ırmağına ekstra özellikler katmaktır. Örneğin gelen ırmağın tamponlanarak performansın artırılması gibi. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 13

BufferedInputStream Sınıfı- I BufferedInputStream sınıfı, FilterInputStream sınıfından türemiştir. BufferedInputStream nesnesinin içerisinde içsel bir dizi bulunur. İçsel bir diziden kasıt edilen, fiziksel dosya veya soket gibi bir kaynaktan okunan sekizli verileri ilk olarak bu içsel dizinin içerisine yerleştirilmesidir. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 14

BufferedInputStream Sınıfı -II BufferedOrnekBir.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 15

PushbackInputStream Sınıfı PushbackInputStream sınıfı, FilterInputStream sınıfından türemiştir. Bu sınıfı kullanarak sekizli (byte) ırmağı içerisinde okunmuş olan bir sekizliyi (byte) tekrardan okumak mümkündür. PushbackOrnekBir.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 16

Standart Okuma Kullanıcı ile uygulama arasında etkileşimi nasıl sağlanabilir? Etkilesim.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 17

OutputStream Soyut (Abstract) Sınıfı Şu ana kadar bir kaynaktan uygulamamıza verilerin nasıl alınıp işlendiğini inceledik Şimdi sıra uygulamadan kaynağa doğru (ör: dosya) veri yazdırma işlemlerinde... Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 18

OutputStream soyut (Abstract) sınıfı ve bu soyut sınıfdan türemiş alt sınıflar Bağlantı kurup yazma işlemleri için tasarlanmış sınıflar Giden sekizli (byte) ırmaklarına özellik katmak için tasarlanmış sınıflar. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 19

OutputStream sınıfına ait yordamlar close() flush() write(byte[] b) write(byte[] b, int off, int len) write(int b) Kaynak ile uygulama arasında kurulmuş olan bağlantıyı kapatır. Tamponlanmış (buffered) olan verileri giden sekizli (byte) ırmağına yazdıran yordam. Giden sekizli (bayt) ırmağı içerisine belirtilen sekizli (byte) tipindeki diziyi aktarır. Giden sekizli (bayt) ırmağı içerisine belirtilen parametrelere göre yazma yapan yordam. byte[] b: Yazılacak olan veri dizisi. int off: Yazılacak olan veri dizisinin kaçıncı elemanından başlanması gerektiğini belirten parametre. int len: Veri dizisinden kaç elemanın giden sekizli ırmağına yazılacağını belirten parametre. Belirtilen veriyi giden bayt ırmağına yazan yordam. Bu yordamın türemiş alt sınıflar tarafından iptal edilmesi gerekir. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 20

write(int b) yordamı Sekizli (byte) ırmağının yönü uygulamadan kaynağa doğrudur. DosyaYazmaBir.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 21

write(byte[] b) ve write(byte[] b, int off, int len) DosyaYazmaIki.java DosyaYazmaUc.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 22

FilterOutputStream sınıfı FilterOutputStream ve bu sınıftan türemiş alt sınıfların görevi, giden sekizli (bayt) ırmağı yazılacak olan sekizli (byte) verilerine yeni özellikler katmaktır. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 23

BufferedOutputStream sınıfı -I Bu sınıfı kullanarak, giden sekizli (bayt) ırmağına yazılacak olan byte ları önceden tamponlayabiliriz. BufferYazmaBir.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 24

BufferedOutputStream sınıfı -II Sekizli(byte) bilgileri ne zaman giden sekizli ırmağına yazılırlar? Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 25

Önemli Noktalar JDK 1.1 'den önce sadece 8-bit'lik sekizli (bayt) ırmakları destekleniyordu. 16 bit'lik Unicode sistemi JDK 1.1 ile birlikte gelmiştir. Oysa; sekizli (bayt) ırmakları sadece ISO8859-1 karakter kümesini (charset) destekler. Karakter ırmakları Unicode sistemini destekler ve Unicode sayesinde uluslararasılaştırma (i18n = internationalization ) daha kolay sağlanır. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 26

Karakter Irmakları (Character Streams) Karakter ırmakları üzerinde işlem yapabilen sınıfların en tepesinde iki soyut sınıf (abstract class) bulunur. Reader Writer java.io paketinin altında eğer bir sınıfın ismi Reader ile veya Writer ile bitiyorsa bu sınıf karakter ırmakları üzerinde işlem yapması için tasarlanmış. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 27

Reader soyut sınıfı Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 28

Gelen karakter ırmağı Gelen karakter ırmağının açılımını bir kez daha yaparsak: Gelen ifadesi, kaynaktan (dosya, soket... gibi) uygulamaya doğru bir hareket olduğunu belirtir. Karakter ifadesi, uygulama ile kaynak arasında kurulmuş olan bağlantının içerisinde temel (primitive) char tipinde verilerin akacağına işarettir. Irmak ise uygulama ile kaynak arasında kurulan bağlantıyı ifade eder. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 29

Reader soyut sınıfına ait yordamlar. close() mark(int okumalimiti) marksupported() read() read(char[] cbuf) read(char[] cbuf, int off, int len) ready() reset() skip(int n) Uygulama ile kaynak arasında kurulmuş bağlantıyı kapatır. İçsel dizi kullanılarak tamponlanmış (buffered) olan veriler içerisinde istenilen pozisyona işaret koyar. Gelen karakter ırmağı için mark() ve reset() yordamlarının çalışabilirliğini test eden yordam. Gelen karakter ırmağı içerisinden tek bir karakter (char) okuyan yordam. Gelen karakter ırmağı içerisinden belirtilen karakter (char) dizisi kadar okuma yapan yordam. Gelen karakter ırmağı içerisinden belirtilen parametrelere göre okuma yapan yordam. Gelen karakter ırmağının okunabilecek durumda olup olmadığını belirten yordam. İşaretlenen pozisyona geri döndüren yordam. olan Gelen karakter ırmağı içerisinden n baytlık veriyi atlar Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 30

InputStreamReader Sınıfı (Köprü) Bu sınıfın rolü köprü görevi görmektir. Bu sınıf, gelen sekizli (bayt) ırmakları ile gelen karakter ırmakları arasında köprü vazifesi görür. import java.io.*; public class ISROrnek { } public static void main(string args[]) throws IOException { InputStream in = System.in; InputStreamReader unicode = new InputStreamReader( in ); //... } Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 31

FileReader sınıfı FileReader sınıfı InputStreamReader sınıfından türemiştir. Bu sınıfın rolü dosyadaki verileri karakter ırmağı şeklinde uygulamaya taşımaktır. FileReaderOrnekBir.java yazi3.txt Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 32

Ekran Çıktısı -- Tek tek okuma i$lemi -- encoding:cp1254 == ISO8859-9 toplamsatirsonu:10 -- Bloklar halinde okuma i$lemi encoding:cp1254 == ISO8859-9 toplamsatirsonu:10 -- Blok halinde belirtilen cercevede okuma i$lemi - encoding:cp1254 == ISO8859-9 toplamsatirsonu:10 Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 33

BufferedReader Sınıfı BufferedReader sınıfını kullanmak performansı ciddi bir şekilde artırmaktadır. BufferedReaderOrnekBir.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 34

Writer soyut sınıfından türemiş diğer alt sınıflara ait şema Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 35

Writer soyut sınıfına ait yordamlar close() flush() write(char cbuf[]) write(char cbuf[], int off, int len) write(int c) write(string str) write(string str, int off, int len) Kaynak ile uygulama arasında kurulmuş olan bağlantıyı kapatır. Kapama işleminin hemen öncesinde veriler giden karakter ırmağına yazılır. Tamponlanmış (buffered) olan verileri giden karakter ırmağına yazdıran yordam. Giden karakter ırmağı içerisine belirtilen karakter (char) dizisini yazar Giden karakter ırmağı içerisine belirtilen parametrelere göre yazma yapan yordam. char[] cbuf: Yazılacak olan veri dizisi. int off: Yazılacak olan veri dizisinin kaçıncı elemanından başlanması gerektiğini belirten parametre. int len: Veri dizisinden kaç elemanın giden karakter ırmağına yazılacağını belirten parametre. Belirtilen karakteri giden karakter ırmağını yazan yordam. String nesnesini giden karakter ırmağına yazan yordam. String nesnesinin belirtilen kısımlarını giden karakter ırmağına yazan yordam. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 36

OutputStreamWriter ve FileWriter Sınıfı FileWriter sınıfı, bölgesel ayarları kullanarak dosyaya yazmaktadır. FileWriterOrnek.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 37

Önemli Nokta UnicodeBulucu.java; bir String nesnesinin veya tek tek karakterlerin Unicode karşılıklarını bulması için tasarlanmıştır. Unicode nedir? UnicodeBulucu.java Karakter Java daki Unicode karşılığı \u0041 \u011f Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 38

PrintWriter Sınıfı Bu sınıfı kullanarak verileri giden karakter ırmağına aktarmamız mümkündür. Bu sınıfın içerisinde sekizli (byte) tipindeki verileri giden karakter ırmağına aktaran bir yordam(method) yoktur. PrintWriterOrnek.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 39

BufferedWriter Sınıfı Bu sınıfın rolü, karakter verilerini giden karakter ırmağına aktarılmalarından evvel tamponlayarak performansın artırılmasını sağlamaktır. FileWriter ve BufferedWriter nesnelerini beraber kullanmak performans açısından daha iyi bir sonuç verecektir. BufferedWriterOrnek.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 40

Performans -I Performans bölümünde 4 adet örnek uygulama incelenecektir. Bu uygulamaların yaptıkları işler hep aynı olacak, dosyaları kopyalamak... Kopyalanması için seçilen dosya ise 361K boyutundaki bir GIF dosyası olsun... Test1.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 41

Performans - II Kopyalanması için seçilen dosya yine 361K boyutundaki bir GIF dosyası olsun... Bu yeni yaklaşımımızda BufferedInputStream ve BufferedOutputStream sınıfları kullanılacaktır; bu yaklaşım acaba performansı nasıl etkileyecek? Test2.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 42

Performans - III Her zaman BufferedInputStream ve BufferedOutputStream sınıflarını kullanmak zorunda değiliz. Bunun yerine kendi oluşturduğumuz dizileri, tampon vazifesi görmesi için kullanabiliriz. Test3.java Test4.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 43

Performans Sonuçları Test1.java uygulamasını kullanırsak, toplam boyutu 361K olan bir GIF dosyanın kopyalanması için gereken süre 13088 ms Test2.java uygulamasını kullanırsak, toplam boyutu 361K olan bir GIF dosyanın kopyalanması için gereken süre 121 ms Test3.java uygulamasını kullanırsak, toplam boyutu 361K olan bir GIF dosyanın kopyalanması için gereken süre 30 ms Test4.java uygulamasını kullanırsak, toplam boyutu 361K olan bir GIF dosyanın kopyalanması için gereken süre 20 ms Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 44

Unicode Unicode, platformu ve programlama dili ne olursa olsun dünya üzerindeki herbir karaktere ayrı ayrı tekil numaralar atanarak geliştirilmiş bir standarttır. Java programlama dilinde kullanılan String nesnelerinin içerisindeki veriler Unicode sistemine uygun olarak tutulur. Uluslararasılaştırma = Internationalization (i18n) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 45

ISO8859-9 Tablosu Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 46

Detaylı Bakış ISO8859-9 tablosundaki "ğ" karakteri yakından incelenirse; Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 47

ISO8859-1 Tablosu Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 48

ISO8859-4 Tablosu Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 49

Örnek UnicodeTest.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 50

File Sınıfı File sınıfı fiziksel dosyaları temsil ederler. FileTestBir.java import java.io.*; public class FileTestBir { public static void main(string[] args) throws IOException { File dosya = new File("Test1.txt"); } } Soru : Bu uygulama çalıştırılırsa Test1.txt dosyası oluşur mu? Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 51

Dönüşüm (Serialization) Dönüşüm bir nesnenin durum bilgisini saklanabilecek ve taşınabilecek şekle dönüştürme işlemidir. Dönüşüm işlemini kullanarak nesneleri ağ üzerinden başka bir makinaya gönderilebilir Sabit diske kayıt edilebilir. Dönüşüm sayesinde nesnelerin ömürleri, uygulamanın ömrüne bağlı olmaktan çıkar. DonusumTest1.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 52

Bölümleyiciler (Tokenizer) Bölümleyiciler, kendilerine gelen karakterleri bölerek parçalara ayırır. Bu parçaların tipi sayı veya harf olabilir. StreamTokenizer sınıfı StringTokenizer sınıfı Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 53

StreamTokenizer sınıfı Bolumleyici.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 54

StringTokenizer sınıfı Bu sınıf, java.util paketinin içerisinde bulunmaktadır. Bu sınıfın StreamTokenizer sınıfından farkı ise, bölümlediği parçaları String tipinde geri döndürmesidir. StringTokenOrnekBir.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 55

Sorular... Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 56