12 Ocak 2015 Pazartesi

Dosyalarda Giriş Çıkış İşlemleri

      Bugünkü konumuzda I/O işlemlerini anlatmaya çalışacağız. Bunun için farklı sınıflar metodlar kullanılmaktadır. Biz de bunlardan bir kaç tanesini ele almaya düşünüyoruz. Şimdi yavaştan başlayalım. Öncelikle dosya işlemini ele alalım. Burada dosya içeriği oluşturulmaz sadece dosya yoksa oluşturulur varsa herhangi bir işlem yapılmaz. Şimdi örneklersek daha iyi anlayacağımızı düşünüyorum

public class FileTest {

public static void main(String[] args) throws IOException {
File file = new File("test.txt");// burada sadece obje oluşturulur
System.out.println(file.exists()); // dosya var mi ?
System.out.println(file.createNewFile()); // doya yoksa oluşturulur
System.out.println(file.exists()); // tekrar kontrol et !

}
}

   Bu kodu ilk çalıştırdığımızda kodumuz
false
true
true
   2.defa çalıştırığımızda ise
true
false
true

döndürecektir. Bunun nedeni ise ilk çalıştırdığımızda test diye bir dosya yoktur. file.createNewFile ile oluşturulur. Daha sonra tekrar kontrol ettiğimzide artık böyle bir dosya mevcut elimizde ve true dönüyor. 2.sefer çalıştırıdığımızda ise bu sefer dosya olduğu için true döndürür ve yeni dosya oluşturulmadığı için creanteNewFile false değer döndürür.

      Şimdi de File ile ilgili daha farklı özelliklere göz atalım. Şimdi de dizin oluşturma ve oluşturduğumuz dizi içerisine dosya oluşturma işlemine göz atalım.

public static void main(String[] args) throws IOException {
File mydir = new File("mydirectory");
mydir.mkdir();  // dizin olusturma islemi atlandi.
        //eğer yukarıdaki dizi oluşturmadan txt oluşturmaya kalkışırsak hata verir
File file = new File(mydir, "test.txt");//oluşan dizi içine txt oluşur
file.createNewFile();

}

Şimdi de silme işlemine göz atalım. Ama unutmamız gereken bir şey var ki o da  dizin altında herhangi bir klasör varsa dosya silme işlemini gerçekleştirmez. Onun için öncelikle dosyaları daha sonra boş olan klasörleri silebiliriz. Buraya dikkat etmemiz gerekir. Şimdi de yukarıdaki koda ek olarak aşağıdaki kodu veriyoruz.

// dizin bos olmadiginda silme islemi yapilamaz.
// false deger donecektir
System.out.println(mydir.delete());

// dosya silinir , true deger donecektir
System.out.println(file.delete());

// dizin icerisindeki dosyayi sildikten sonra tekrar deneyelim.
System.out.println(mydir.delete()); //ve artık silme işlemi tamamlanır

Bunun gibi daha farklı işlemler bulunmaktadır. İsim değiştirme listeleme gibi işlemler bulunur. Bunlara da göz atılabilir. Biz şimdilik bunlara girmiyoruz. Son olarak da dosyaya yazma ve okuma ile yazıyı bitiriyoruz

public static void main(String[] args) throws IOException {

    File file = new File("file.txt");

    FileWriter fw = new FileWriter(file);
    fw.write("java");
    fw.write(" 6");
    // write metodu ile String veya char array yazabiliriz. 
    // int alan   yapilandiricisi ilgili sayinin unicode degeridir.
    fw.flush(); // Verinin bufferdan bağımsız diske hemen yazılmasını sağlar
    fw.close(); // IO islemlerinde , DB baglanma islemlerinde close metodu
    // cagrilmalidir. Bu baglantinin kapatilmasi anlamina gelmektedir.
    // Acik baglanti birakmamak icin close metodunu cagirmayi unutmayalim !

    char[] input = new char[50];
    int size = 0;
    FileReader fr = new FileReader(file); // FileReader objesi olusturduk
    size = fr.read(input); // dosya icerigini oku
    System.out.println("size:" + size); // kac byte okundu ?

    for (char c : input) {
    System.out.print(c);
         }
    fr.close();
    }
}








Hiç yorum yok:

Yorum Gönder