Java - Dosya Okuma ve Dosya Yazma

Cumartesi, Mayıs 23, 2015 kustemura 0 Yorum


Merhaba bu yazımda Java'da Dosya İşlemleri ile ilgili en çok kullanılan 2 yapıyı anlatacağım.

FileInputStream(String fileName) throws FileNotFoundException
FileOutputStream(String fileName) throws FileNotFoundException
Buradaki fileName açmak istediğiniz dosyanın ismini belirtir.Eğer dosya bulunamaz ise IOException sınıfının bir alt sınıfı olan FileNotFoundException'ı fırlatır.

Yapılan dosya işlemleri tamamlandığında close() methodu ile kapatılmalıdır.Aksi takdirde sistem kaynakları serbest kalır ve burada bir güvenlik açığı meydana gelmiş olur.

1 - Dosya Okuma

Örnek üzerinden anlatayım :

package com.blogger_project;

import java.io.FileInputStream;
import java.io.IOException;

class FileRead {
 public static void main(final String args[]) {
  int i;
  String str = "";
  FileInputStream input = null;

  try {
   input = new FileInputStream("C:\\first.txt");

   do {
    i = input.read();
    if (i != -1) {
     str += (char) i;
    }
   } while (i != -1);
  } catch (final IOException e) {
   e.printStackTrace();
  }

  try {
   input.close();
  } catch (final IOException e) {
   e.printStackTrace();
  }

  System.out.println(str);
 }
}
Programın Çıktısı : 
Hello World !
Yukarıda ki programda input değişkeni FileInputStream sınıfını referans etmektedir.try bloğunun içerisinde nesnemizi oluşturuyoruz ve bir parametreli Constructor'un aldığı argüman değeri dosyanın ismidir.(Dosya ismi içerisindeki argümanın iki adet "\" ifadesi almasının sebebi derleyicinin "\" karakterinden sonraki karakteri dikkate almadan derleme işlemine devam etmesini sağladık.Yani "C:\\first.txt" bu değerin çıktısı "C:\first.txt" bu olucaktır.Onu başka bir yazımda anlatacağım.[Escape Characters]) . do-while içerisinde ki i değişkenine atadığımız input değişkeni FileInputStream sınıfının read() methodunu çağırır ve bu method bir tamsayı değer döndürür.Eğer dosya okuma işleminin sonuna yaklaşırsa döndürdürüğü değer -1 olur.i değişkenini char tipinde cast ettikten sonra str'ye ekliyoruz.Ben örnek olarak first.txt içerisine "Hello World !" yazıp kaydettim.Okuma işlemini yaptıktan sonra yukarıda belirttiğim gibi dosyayı kapatmamız gerekiyor.Bunuda bir try-catch bloğunda close() methodunu çağırarak yapıyoruz.Yapılan bu işlemlerin hepsi birer IOException fırlatabilir.

 2 - Dosya Yazma

Buradaki program " first.txt " içerisindeki verileri " second.txt " 'ye aktarır.

package com.blogger_project;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

class FileRead {
 public static void main(final String args[]) {
  int i;
  FileInputStream input = null;
  FileOutputStream output = null;

  try {
   input = new FileInputStream("C:\\first.txt");
   output = new FileOutputStream("C:\\second.txt");

   do {
    i = input.read();
    if (i != -1) {
     output.write(i);
    }
   } while (i != -1);
  } catch (final IOException e) {
   e.printStackTrace();
  } finally {
   try {
    if (input != null) {
     input.close();
    }

   } catch (final IOException e) {
    e.printStackTrace();
   }
   try {
    if (output != null) {
     output.close();
    }
   } catch (final IOException e2) {
    e2.printStackTrace();
   }
  }

 }
}
Burada "Dosya Okuma" işlemlerinde yapmış olduğumuz str  değişkenine eklediğimiz değerleri output nesnesine FileOutputStream sınıfının write() methodunu kullanarak aktarıyoruz.Bir önceki işlemlerden farklı olarak try-catch bloğunda bir finally bloğu yer alıyor.Burası programımıza bir esneklik sağlıyor.finally bloğu her zaman try-catch bloklarından sonra kesinlikle çalıştırılır.Dosya kapatma işlemlerini burdan yönetmek hem daha önceden oluşan sorunlardan ötürü kapanmayan dosyaları kapatır hemde kodu kısaltır.

0 yorum :