 |
|
 |
|
SEQUENTITIAL (ARDAŞIK) DOSYALAR
Bu dosyalarda veriler arka arkaya okunan byte blokları olarak kabul edilir. Her dosya dosya-bitiş işaretiyle sonlandırılır. Yeni bir dosya açıldığında bu dosyayı temsil eden bir nesne oluşturulur.
Dosya sınıfı, giriş çıkış işlemlerini sağlamanın yanı sıra dosya isimleri ve bulundukları dizinlerle ilgili bilgi verir. Kurucu metodları bir örnekte açıklamaya çalışalım. ( Çoban,2000)
dosyatesti.java
Java:
import java.io.*; class dosyaTesti { public static void main (String args []) { (1) File dosya= new File("buton.java"); (2) System. out. println("Dosya ismi:"+dosya. getName()); (3) System. out. println("Dizin ismi:"+dosya. getPath()); (4) System. out. println("Mutlak dizin ismi:"+dosya. getAbsolutePath()); (5) System. out. println("šst dizin ismi:"+dosya. getParent()); (6) System. out. println(dosya. exists()? "Mevcut": "Mevcut degil"); (7) System. out. println(dosya. canWrite()? "Yazilabilir": "Yazilamaz"); (8) System. out. println(dosya. canRead()? "Okunabilir": "Okunamaz"); (9) System. out. println(dosya. isDirectory()? "Dizin": "Dizin degil"); (10) System. out. println(dosya. isFile()? "Dosya": "Dosya degil"); (11) System. out. println(dosya. isAbsolute()? "Mutlak dizin ismi": "Mutlak dizin ismi degil"); (12) System. out. println("Son değişiklik tarihi:"+dosya. lastModified()); (13) System. out. println("Dosya boyutu:"+dosya. length()+ " byte"); } }
1. File değişken adı : Dosya sınıfında yeni bir dosya tanımlamak için kullanılır. dosya adında bir değişkene tanımlanmış, buton.java dosyası bu değişkene atanmıştır. 2. getName( ): Dosyanın ismini verir. 3. getPath( ): Dosyanın ismini ve içinde bulunduğu dizinin ismini verir. 4.getAbsolutePath( ):Dosyanın tam dizinini ve dosya ismini verir. 5. getParent( ):Dosyanın içinde bulunduğu dizinin ismini verir. 6. exists( ): Dosyanın mevcut olup olmadığını kontrol eder. 7. canWrite( ): Tanımlanan dosyaya bilgi yazılabildiğini kontrol eder. 8. canRead( ): Tanımlanan dosyadan bilgi olunabildiğini kontrol eder. 9. isDirectory( ): Verile ismin bir dizin olup olmadığını kontrol eder. 10. isFile( ): Verilen ismin bir dosya olup olmadığını kontrol eder. 11. isAbsolute( ): Dosya isminin mutlak isim olup olmadığını kontrol eder. ( Eğer dosya ismi co/java/prog/Buton.java olarak verilmişse true değeri döndürür.) 12. lastModified( ): Dosyanın en son değiştirildiği tarihi verir. 13.length( ): Dosyanın boyutunu Byte olarak verir. Bunun yanı sıra kullanılan diğer dosya fonksiyonları: delete( ): Dosya siler. equals(nesne): nesne de verilen dosya adıyla, dosya ismini karşılaştırır. list( ): Verilen dizinin içindeki dosyaların listesini verir. mkdir( ): Yeni bir dizin oluşturur. mkdirs( ): o anda tanımlı olan dizin içinde bir alt dizin olşturur. renameTo( dosya) : Dosyanın ismini değiştirir. toString( ): Dosya ve dizin topluğunun String değişkeni içerisindeki eşdeğerini verir.
Bir girdi-çıktı akış nesnesi (dosya) ouşturmak istediğimizde FileInputStream veya FileOutputStream sınıfında bir nesne oluştururuz. Eğer değişkenleri byte byte yerine Double veya Integer veri tipinde okumak istersek DataInputStream veya DataOutputStream nesnelerini kullanmamız gerekir. Aşağıdaki Java programı sequential tipte bir dosya yaratır.
dosyayarat.java
(1) Giriş-çıkış ve grafik fonksiyonların içeren kütüphaneler programa dahil ediliyor.
(2) dosyayarat adlı bir sınıf tanımlanıyor.
(3) hisim, ,isim, soyisim, hesap adlı metin kutuları tanımlanıyor.
(4) enter,done adlı butonları tanımlanıyor.
(5) io sınıfı nesnelerinden DataOutputStream ile dosyamıza veri yazılmasında kullanılacak nesne tanımlanıyor ve adı cikti veriliyor.
(6) H,I,S,P adlı etiketler tanımlanıyor.
(7) dosyayarat adlı tanımladığımız fonksiyon kodları yazılmaya başlanıyor.
(8) ("Musteri dosyasi Ac") başlıklı bir üst sınıf tanımlanıyor.
(9) musteri.txt adlı dosya açılmaya çalışılıyor.
(10) Eğer dosya açılmamışsa kullanıcıya mesaj verilerek programdan çıkılıyor.
(11) Formumuzun boyutları ve ızgara boyutları tanımlanıyor.
(12) H adlı etiket içeriği “Hesap numarasi” oluyor.
(13) hisim adlı tanımladığımız text nesnesi oluşturuluyor.
(14) I adlı etiket içeriği “İsim” oluyor.
(15) isim adlı tanımladığımız text nesnesi oluşturuluyor.
(16) S adlı etiket içeriği “Soyisim” oluyor.
(17) soyisim adlı tanımladığımız text nesnesi oluşturuluyor.
(18) P adlı etiket içeriği “Hesap” oluyor.
(19) hesap adlı tanımladığımız text nesnesi oluşturuluyor.
(20) enter adlı tanımladığımız “Gir” etiketli buton oluşturuluyor.
(21) done adlı tanımladığımız “Çıkış” etiketli buton oluşturuluyor.
(22) Formumuzun görünür olması sağlanıyor. (Visible özelliği false yapılarak formumuzun görünmemesini sağlayabiliriz.)
(23) hesapekle adlı fonksiyon kodalrı başlıyor.
(24) Değişkenlerimiz tanımlanıyor.
(25) Eğer hismi adlı text nesnesi boş değilse yani bu alana veri girilmişse,
(26) Hesap alanı 0 dan farklı bir değer ise,
(27) Veriler dosyaya yazılıyor.
(28) Veri girişi yapılan alanlar bir sonraki kullanım için boşaltılıyor.
(29) Eğer hesap numarası alanı tamsayı girilmediyse kullanıcıya hata mesajı verdiriliyor.
(30) Dosyaya verileri yazarken hata oluşmuşsa kullanıcıya mesaj verdiriliyor.
(31) Tanımladığımız kullanıcı fonksiyonları çağrılıyor, buraya anlatılan kontroller yaptırılıyor.
(32) Dosya kapatılıyor.
(33) Eğer dosya kapatılırken hata oluşmuşsa kullanıcıya mesaj verdiriliyor.
(34) Oluşturduğumuz fonksiyon ana programdan çağrılıyor.
Java:
(1)import java.io.*; import java.awt.*; import java.awt.event.*; (2)public class dosyayarat extends Frame implements ActionListener { (3) private TextField hismi,isim,soyisim,hesap; (4) private Button enter,done; (5) private DataOutputStream cikti; (6) private Label H,I,S,P; (7) public dosyayarat () { (8) super ("Musteri dosyasi Ac"); (9) try { cikti= new DataOutputStream(new FileOutputStream("musteri.txt")); } catch(IOException e ) { (10) System. err. println("Dosya dogru acilamadin"+e. toString()); System. exit(1); } (11) setSize (300, 150); setLayout (new GridLayout(5, 2)); (12) H= new Label("Hesap numarasi"); add (H ); (13) hismi= new TextField(); add (hismi ); (14) I= new Label("Isim"); add (I ); (15) isim= new TextField(20); add (isim ); (16) S= new Label("Soyisim"); add (S ); (17) soyisim= new TextField(20); add (soyisim ); (18) P= new Label("Hesap"); add (P ); (19) hesap= new TextField(20); add (hesap ); (20) enter= new Button("Gir"); enter. addActionListener(this); add (enter ); (21) done= new Button("Cikis"); done. addActionListener(this); add (done ); (22) setVisible (true); } (23) public void hesapekle () { (24) int accountNumber= 0; Double d; (25) if(!hismi. getText(). equals("")) { try { accountNumber= Integer. parseInt(hismi. getText()); (26) if(accountNumber!= 0) { (27) cikti. writeInt(accountNumber ); cikti. writeUTF(isim. getText()); cikti. writeUTF(soyisim. getText()); d= new Double(hesap. getText()); cikti. writeDouble(d. doubleValue()); } (28) hismi. setText(""); isim. setText(""); soyisim. setText(""); hesap. setText(""); } catch(NumberFormatException nfe ) { (29) System. err. println("Hesap numarasi tamsayi degisken olmalidir"); } catch(IOException io ) { (30)System. err. println("Dosyaya yazarken hata olustun"+io. toString()); System. exit(1); } } } (31) public void actionPerformed (ActionEvent e ) { hesapekle (); if(e. getSource()==done ) { try { (32) cikti. close(); } catch(IOException io ) { (33) System. err. println("Dosya kapatilamadin"+io. toString()); } System. exit(0); } } (34) public static void main (String args []) { new dosyayarat (); } }
Eğer hesap numarasını bir tamsayı değişken girmezsek yukarıdaki gibi bir hata mesajıyla karşılaşırız.
Bu Java programı ise yarattığımız sequentitial dosyadan verileri okumamızı sağlar.
dosyaoku.java
(1)Giriş-çıkış ve grafik fonksiyonların içeren kütüphaneler programa dahil ediliyor.
(2) dosyaoku adlı bir sınıf tanımlanıyor.
(3) hisim, ,isim, soyisim, hesap adlı metin kutuları tanımlanıyor.
(4) next,done adlı butonları tanımlanıyor.
(5) io sınıfı nesnelerinden DataInputStream ile dosyamızın okunmasında kullanılacak nesne tanımlanıyor ve adı oku veriliyor.
(6) H,I,S,P adlı etiketler tanımlanıyor.
(7) dosyaoku adlı tanımladığımız fonksiyon kodları yazılmaya başlanıyor.
(8) ("Musteri dosyasi oku") başlıklı bir üst sınıf tanımlanıyor.
(9) musteri.txt adlı dosya açılmaya çalışılıyor.
(10) Eğer dosya açılmamışsa kullanıcıya mesaj verilerek programdan çıkılıyor.
(11) Formumuzun boyutları ve ızgara boyutları tanımlanıyor.
(12) H adlı etiket içeriği “Hesap numarasi” oluyor.
(13) hisim adlı tanımladığımız text nesnesi oluşturuluyor.
(14) I adlı etiket içeriği “İsim” oluyor.
(15) isim adlı tanımladığımız text nesnesi oluşturuluyor.
(16) S adlı etiket içeriği “Soyisim” oluyor.
(17) soyisim adlı tanımladığımız text nesnesi oluşturuluyor.
(18) P adlı etiket içeriği “Hesap” oluyor.
(19) hesap adlı tanımladığımız text nesnesi oluşturuluyor.
(20) next adlı tanımladığımız “İleri” etiketli buton oluşturuluyor.
(21) done adlı tanımladığımız “Çıkış” etiketli buton oluşturuluyor.
(22) Formumuzun görünür olması sağlanıyor. (Visible özelliği false yapılarak formumuzun görünmemesini sağlayabiliriz.)
(23) kayitoku adlı fonksiyon kodları başlıyor.
(24) Değişkenlerimiz tanımlanıyor.
Java:
(1)import java.io.*; import java.awt.*; import java.awt.event.*; (2)public class dosyaoku extends Frame implements ActionListener { (3) private TextField hismi,isim,soyisim,hesap; (4) private Button next,done; (5) private DataInputStream oku; (6) private Label H,I,S,P; (7) public dosyaoku () { (8) super ("Musteri dosyasi oku"); (9) try { oku= new DataInputStream(new FileInputStream("musteri.txt")); } catch(IOException e ) { (10) System. err. println("Dosya dogru acilamadin"+e. toString()); System. exit(1); } (11) setSize (300, 150); setLayout (new GridLayout(5, 2)); (12) H= new Label("Hesap numarasi"); add (H ); (13) hismi= new TextField(); add (hismi ); (14) I= new Label("Isim"); add (I ); (15) isim= new TextField(20); add (isim ); (16) S= new Label("Soyisim"); add (S ); (17) soyisim= new TextField(20); add (soyisim ); (18) P= new Label("Hesap"); add (P ); (19) hesap= new TextField(20); add (hesap ); (20) next= new Button("ileri"); next. addActionListener(this); add (next ); (21) done= new Button("cikis"); done. addActionListener(this); add (done ); (22) setVisible (true); } (23) public void kayitoku () { (24) int account; String first,last; double balance; try { account=oku. readInt(); first=oku. readUTF(); last=oku. readUTF(); balance=oku. readDouble(); hismi. setText(String. valueOf(account )); isim. setText(first ); soyisim. setText(last ); hesap. setText(String. valueOf(balance )); } catch(EOFException eof ) { dosyakapat (); } catch(IOException io ) { System. err. println("Dosya okurken hata olustun"+io. toString()); System. exit(1); } } public void actionPerformed (ActionEvent e ) { if(e. getSource()==next ) kayitoku (); else dosyakapat (); } private void dosyakapat () { try { oku. close(); System. exit(0); } catch(IOException e ) { System. err. println("Dosya Kapama Hatasi olustun"+e. toString()); System. exit(1); } } public static void main (String args []) { new dosyaoku (); } }
Yazdığımız Java programı derlendiğinde yukarıdaki form ile dosyadan verilerimizi okuyabiliriz.
|
 |
 |
|
 |
 |
|
 |
|
|
|
Ekleyen
|
: Alim Ömer ABUL |
|
Okunma Sayısı |
:
117 |
|
Eklenme Tarihi |
:
25 Ocak 2007, Perşembe |
|
SONRAKI BILGI |
:
Piştim
|
|
 |
 |
|
 |
|
|