JAVA DOSYA İŞLEMLERİ ÖĞR.GÖR. UTKU SOBUTAY
DOSYA SINIFI Java da dosya işlemleri için dosya sınıfları kullanılmaktadır. Dosyanın ismini ve dosya yolunu tutmak için File sınıfı kullanılır. File sınıfı kullanılarak dosyanın bulunduğu konumu, dosya boyutunu ve dosya ismini elde edebiliriz. File sınıfını kullanmak için; import java.io.file; kütüphanesi eklenmelidir. Kullanımı; Örnek; File degiskenismi=new File(dosyanın yolu ve ismi); File benimdosyam=new File("C:\dosya.txt");
DOSYA BİLGİLERİNİN ALINMASI File sınıfı kullanılarak verilen dosya hakkında çeşitli bilgiler alınabilir. Dosya ismini almak için; file.getname(); kullanılır. Dosya boyutunu almak için; file.lenght(); kullanılır. Dosya boyutu byte cinsinden verilmektedir. KB a çevirmek için 1024 e bölünür. MB a çevirmek için (1024x1024) yani 1024 ün karesine bölünür. Dosyanın yolunu almak için; file.getpath(); kullanılır. Hem dosya yolunu dosyanın ismi ile birlikte vermektedir. Dosya ismi olmadan sadece yolu almak için; file.getparent() kullanılır. Dosyanın var olup olmadığını kontrol etmek için; file.exist(); kullanılır. Sonuç true ise dosya vardır. Sonuç false ise dosya yoktur.
DOSYA OLUŞTURMAK Yeni bir dosya oluşturmak için de File sınıfı kullanılır. Dosya oluşturmadan önce ismi verilen dosyanın var olup olmadığı kontrol edilmelidir. Dosya oluşturmak için; import java.io.file ve import java.io.ioexception; kütüphanelerinin eklenmesi gerekir. Aşağıdaki kod filename string i ile verilen isimde dosya oluşturmaktadır; Dosyanın var olup olmadığı kontrol ediliyor. Dosya yoksa oluşturuluyor Oluşturma sırasında hata oluşursa yazdırılıyor
DOSYA SİLMEK Dosya silmek için yine dosyayı oluştururken kullandığımız File sınıfı kullanılır. Dosyanın olup olmadığı kontrol edilip dosya silinebilir. Kullanımı; File file=new File("C:\deneme.txt"); if(file.exists!=null){ // dosyanın olup olmadığı kontrol ediliyor file.delete(); // dosya siliniyor }
DOSYA SEÇİCİ KULLANIMI (JFILECHOOSER) Oluşturulacak veya okunup yazılacak dosyanın seçilmesi için JFileChooser sınıfı kullanılabilir. Bu sınıfı kullanabilmek için; import javax.swing.jfilechooser; kütüphanesi eklenmelidir. Dosya oluşturmak için; JFileChooser chooser=new JFileChooser( Dosyayı Seçiniz ); //JFileChooser Sınıfı oluşturuluyor ve başlığına Dosya Seçiniz yazılıyor. chooser.showsavedialog(null); // oluşturulacak dosyanın ismini vermek için kaydet penceresi açılıyor File file=chooser.getselectedfile(); // seçilen dosya File sınıfına aktarılıyor
DOSYA SEÇİCİ KULLANIMI (JFILECHOOSER) Dosya açmak için; JFileChooser chooser=new JFileChooser( Dosyayı Seçiniz ); //JFileChooser Sınıfı oluşturuluyor ve başlığına Dosya Seçiniz yazılıyor. chooser.showopendialog(null); // seçilecek dosyanın belirlemek için açma penceresi açılıyor File file=chooser.getselectedfile(); // seçilen dosya File sınıfına aktarılıyor
DOSYAYA STRING YAZMAK Klavyeden girilen veya doğrudan verilen bir String değişkenin dosyaya yazılabilmesi için FileWriter ve BufferedWriter sınıfları kullanılmaktadır. FileWriter sınıfı kullanılarak yazılacak dosya belirlenir. FileWriter sınıfından nesne oluştururken; parametre olarak ya dosyanın yolu veya dosyanın File sınıfı girilir. FileWriter sınıfını kullanabilmek için; import java.io.filewriter; kütüphanesi eklenmelidir. Kullanımı; File benimdosyam=new File("c:\dosya.txt"); //dosya sınıfı oluşturuluyor FileWriter yazilacakdosya=new FileWriter(benimDosyam); // yazılacak dosya belirleniyor
DOSYAYA STRING YAZMAK Yazılacak dosya belirlendikten sonra, String i dosyaya yazacak sınıf olan BufferedWriter sınıfı oluşturulur. BufferedWriter sınıfı oluşturulurken parametre olarak FileWriter sınıfından bir nesne girilir. BufferedWriter sınıfını kullanabilmek için; import java.io.bufferedwriter; kütüphanesinin eklenmesi gerekir. Dosyaya yazılacak metin String değişkeni ile tutulur. Dosyayı yazma işlemini gerçekleştirmek için BufferedWriter sınıfının write(string) fonksiyonu kullanılır. Yazım tamamlandıktan sonra BufferedWriter sınıfın nesnesi close() fonksiyonu ile kapatılmalıdır. Dosya yazma sırasında yapılan işlemler hata oluşma olasılığından dolayı try / catch içerisinde yazılmalıdır.
DOSYAYA STRING YAZMAK Kullanımı; try{ File benimdosyam=new File("c:\dosya.txt"); //dosya sınıfı oluşturuluyor FileWriter yazilacakdosya=new FileWriter(benimDosyam); // yazılacak dosya belirleniyor BufferedWriter dosyayazici=new BufferedWriter(yazilacakDosya); String metin="bu bir Java dosya yazma denemesidir." //yazılacak String değişkeni dosyayazici.write(metin); // String dosyaya yazılıyor dosyayazici.close(); // BufferedWriter sınıfı kapatılıyor }catch(ioexception exp){ //dosya giriş/çıkış hatası yakalanıyor } exp.printstacktrace(); // hata mesajı gösteriliyor
DOSYA OKUMAK Dosya okumak için; dosya yazmaya benzer olarak FileReader ve BufferedReader sınıfları kullanılmaktadır. FileReader sınıfı kullanılarak yazılacak dosya belirlenir. FileReader sınıfından nesne oluştururken; parametre olarak ya dosyanın yolu veya dosyanın File sınıfı girilir. FileWriter sınıfını kullanabilmek için; import java.io.filereader; kütüphanesi eklenmelidir. Kullanımı; File benimdosyam=new File("c:\dosya.txt"); //dosya sınıfı oluşturuluyor FileReader okunacakdosya=new FileReader(benimDosyam); // yazılacak dosya belirleniyor
DOSYA OKUMAK Yazılacak dosya belirlendikten sonra, String i dosyaya yazacak sınıf olan Bufferedreader sınıfı oluşturulur. BufferedReader sınıfı oluşturulurken parametre olarak FileReader sınıfından bir nesne girilir. BufferedReader sınıfını kullanabilmek için; import java.io.bufferedreader; kütüphanesinin eklenmesi gerekir. Dosyayı okuma işlemini gerçekleştirmek için BufferedReader sınıfının readline() fonksiyonu kullanılır. Okuma tamamlandıktan sonra BufferedReader sınıfın nesnesi close() fonksiyonu ile kapatılmalıdır. Dosya içerisinde birden fazla satır var ise; dosya while döngüsü kullanılarak okunmalıdır. Dosya yazma sırasında yapılan işlemler hata oluşma olasılığından dolayı try / catch içerisinde yazılmalıdır.
DOSYA OKUMAK Kullanımı; try{ File benimdosyam=new File("c:\dosya.txt"); //dosya sınıfı oluşturuluyor FileReader okunacakdosya=new FileReader(benimDosyam); // okunacak dosya belirleniyor BufferedReader dosyaokuyucu=new BufferedReader(okunacakDosya); String metin; // okunan String değişkeni while((metin=dosyaokuyucu.readline())!=null){ // dosyada satır olduğu sürece okuma devam ediyor } System.out.println(metin); // okunan String konsola yazdırılıyor dosyaokuyucu.close(); // BufferedReader sınıfı kapatılıyor }catch(ioexception exp){ //dosya giriş/çıkış hatası yakalanıyor } exp.printstacktrace(); // hata mesajı gösteriliyor
DOSYA AKIMLARI (FileStream) FileReader ve FileWriter sınıfları metin dosyalarını satır satır okuyup yazmak için kullanılmaktadır. Dosyaları karakter ve byte bazlı okuyup yazabilmek için Stream sınıfları kullanılmaktadır. FileInputStream dosyaları byte veya char tipinde okumak için kullanılır. FileOutputStream dosyaları byte veya char tipinde yazmak için kullanılır. Bu iki sınıfı kullanabilmek için; import java.io.fileinputstream; import java.io.fileoutputstream; kütüphaneleri eklenmelidir.
FileInputStream Dosya seçici sınıfından nesne oluşturulur Dosya seçicinin dosya açma penceresi açar Dosya seçici ile seçilen dosya File sınıfına aktarılır. Dosya okumak için giriş Stream i oluşturulur Okunacak dosya verilerini tutmak için byte dizisi oluşturulur. (fis.avaible() kodu okunacak veri sayısını tutar Dosya okunarak byte dizisine atılır. Stream Sınıfları dosyayı bütünüyle okuyup char veya byte dizisine atabilir. Okunan byte dizisi döngü kurmadan yazdırılmak için String e çevrilir ve bütünüyle konsola yazdırılabilir.
FileOutputStream Dosya yazma Stream i kapatılır Dosya seçici Sınıfından nesne oluşturulur Dosya seçici ile dosya kaydetme penceresi açılır Dosya seçici ile seçilen dosya File sınıfına aktarılır Dosyayı yazacak çıkış Stream i oluşturulur Dosyaya yazılacak metin belirlenir Dosyaya yazılacak metin, byte dizisine dönüştürülür byte dizisi dosyaya yazılır
Dinlediğiniz için Teşekkürler