Ekim 19, 2021
11 11 11 ÖÖ
TCP nedir ? Aktarım Katmanı 2
Aktarım Katmanı Tcp Nedir
Yönlendirme Nedir 2 ?
Yönlendirme Nedir ?
Ağ Katmanı Nedir 2 ?
Ağ Katmanı Nedir ?
Veri Bağı Katmanı Nedir 2 ?
Android Studio Nasıl Kurulur ?
Veri Bağı Katmanı Nedir ?
Fiziksel Katman Nedir ?
Son Yazılar
TCP nedir ? Aktarım Katmanı 2 Aktarım Katmanı Tcp Nedir Yönlendirme Nedir 2 ? Yönlendirme Nedir ? Ağ Katmanı Nedir 2 ? Ağ Katmanı Nedir ? Veri Bağı Katmanı Nedir 2 ? Android Studio Nasıl Kurulur ? Veri Bağı Katmanı Nedir ? Fiziksel Katman Nedir ?
java

Java Dosya İşlemleri(I/O)

Paylaşım , Takip İçin

Giriş/Çıkış (I/O)İşlemleri Nedir?

  • Bir dosyadan veri okumak yada bir dosyaya veri yazmak için Giriş/Çıkış (I/O) işlemleri kullanılır.
  • Giriş/Çıkış işlemleri için import java.io.* paketini programa eklemeniz gerekmektedir.
  • Java’da giriş çıkış işlemleri Stream mantığı ile yapılır. Stream program ile dosya arasında bir köprü görevi görür.
  • Java’da dosyalama işlemleri karakter bazlı yada byte bazlı olarak ikiye ayrılır.
  • Bunun sebebi Java’nın sağlamış olduğu Unicode desteğidir.

Karakter Tabanlı Giriş /Çıkış İşlemleri

  • Dosya okuma işlemleri
  • InputStreamReader
  • BufferedReader
  • FileReader
  • FilterReader
  • StringReader

Dosya yazma işlemleri

OutputStreamWriter

BufferedWriter

FileWriter

StringWriter

PrintWriter

Unicode desteği vardır.

Eğer read yada write kelimesi varsa o sınıf karakter tabanlı işlem yapar.

Byte Tabanlı Giriş /Çıkış İşlemleri

  • Dosya okuma işlemleri
  • BufferedInputStream
  • DataInputStream
  • FilterInputStream
  • PrintStream
  • RandomAccessFile
  • FileInputStream

Dosya yazma işlemleri

BufferedOutputStream

DataOutputStream

FileOutputStream

FilterOutputStream

Unicode desteği yoktur.

Stream ile bitiyorsa byte tabanlı işlem yapar.

File Sınıfı Kullanımı

  • File sınıfı bilgisayardaki dosya ve dosya üzerinde işlem yapmak için kullanılır.
  • File sınıfı kullanılırken bu sınıfın Yapılandırıcısına dosyanın uzantısı (path) verilir. (dizin yolu)
  • File Sınıfı bazı metotlar:
  • createNewFile()
  • delete()
  • getName()
  • getAbsolutePath()
  • exists()
  • renameTo()
  • mkdir()
  • canRead(), canWrite()

Örnek

import java.io.*;

public class FileExamples {

  public static void main(String[] args) {

    File dosya=new File("C:\\workspace\\deneme.txt");

    try {

      dosya.createNewFile();//Yeni dosya oluşturmak

      System.out.println("Dosya Oluşturuldu");

    }

    catch (IOException e) {

      e.printStackTrace();

    }

    System.out.println(dosya.getName());

    System.out.println(dosya.getPath());

    System.out.println(dosya.getAbsolutePath());

  }

}



-------------------------------

Dosya Oluşturuldu

deneme.txt

C:\workspace\deneme.txt

C:\workspace\deneme.txt

Örnek

import java.io.*;

public class FileExamples {

  public static void main(String[] args) {

    File dosya=new File("C:\\workspace\\deneme.txt");

    try {

      dosya.createNewFile();//Yeni dosya oluşturmak

    }

    catch (IOException e) {

      e.printStackTrace();

    }

    File path=new File("C:\\workspace\\yeni");

    path.mkdir();//Yeni klasör açmak

    //Dosynın adını ve yolu değiştirmek

    File yeni=new File("C:\\workspace\\Kopya.txt");

    dosya.renameTo(yeni);

    if(yeni.canRead()==true && yeni.canWrite()==true)

       System.out.println("Dosya okunabilir ve yazılabilir");

  }

}

FileReader ve FileWriter ile I/O İşlemleri

  • FileReader File sınıfından oluşturduğunuz nesneleri karakter bazlı okumak için kullanılan bir sınıftır.
  • Karakter bazlı işlem yaptığı için okunan veriler char tipinde bir diziye aktarılmalıdır.
  • FileWriter sınıfı da karakter bazlı işlem yapmaktadır.
  • Dosyaya yazma ve ekleme yapma gibiişlemleri yerine getirmek için kullanılırlar.
  • Buffer kullanmadığı için küçük dosya okuma işlemlerinde daha uygundur.

Örnek

import java.io.*;

public class FileCopy {

  public static void main(String[] args) {

    File dosya=new File("C:\\Workspace\\Kitap.txt");

    char[] data=new char[(int)dosya.length()];

    try {

      FileReader fr=new FileReader(dosya);

      fr.read(data);//Dosyadan okunan veri char dizisine aktarılıyor

    }

    catch (IOException e) {

      e.printStackTrace();

      System.err.println("Dosya okunamadı");//Hata oluştuğunda uyarı mesajı döner

    }

    String okunan=new String(data);//Char dizisinin Stringe çevrilmesi

    System.out.println(okunan);

    for(int i=0;i<data.length;i++)

       System.out.print(data[i]);

  }

}

Dosya Kopyalama

import java.io.*;

public class FinallyExp {

  public static void main(String[] args) {

    File dosya=new File("C:\\workspace\\kitap.txt");

    File dosya2=new File("C:\\workspace\\kitapkopya.txt");

    char data[]=new char[(int) dosya.length()];

    try(FileWriter yaz=new FileWriter(dosya2,true)) {

      FileReader reader=new FileReader(dosya);

      reader.read(data);

      yaz.write(data); //Dizi Dosyaya yazılıyor

    }

    catch (IOException e) {

      e.printStackTrace();//Hata yığınını ekrana basar

    }

  }

}

FileWriter(dosya2,true) nesnesi iki parametre alır.

İkinci parametre true ise dosyanın sonuna ekleme yapacaktır.

Aksi halde dosyanın içindeki bilgileri siler.

BufferedReader ve BufferedWriter Sınıfları

  • Reader sınıfından türetilen BufferedReader ve Writer sınıfından türetilen BufferedWriter sınıfları karakter bazlı çalışırlar.
  • Dosyadan okuma işlemleri için buffer kullanılır ve performansı FileReader ve FileWriter sınıfına göre daha iyidir.
  • Kullanımı için:

  import java.io.*;

  • Satırını kodunuza eklemeniz gerekmektedir.

Örnek-1

import java.io.*;

import java.util.Scanner;

public class BufferedReaderExp {

  public static void main(String[] args) {

    File dosya =new File("C:\\Workspace\\Kitap.txt");

    try {//Veri okuma

      FileReader fr=new FileReader(dosya);

      BufferedReader br=new BufferedReader(fr);

      String satir;

      while((satir=br.readLine())!=null){

        System.out.println(satir);

      }

      br.close();

    }

    catch (Exception e) {

      System.err.println(e.toString());

    }

Örnek-2

    Scanner s=new Scanner(System.in);

    System.out.println("Bir ifade giriniz.");

    String line=s.nextLine();

    File dosya2=new File("C:\\Workspace\\KitapYeni.txt");

    try {

      FileWriter fw=new FileWriter(dosya2);

      BufferedWriter bw=new BufferedWriter(fw);

      bw.write(line.toUpperCase()); //Girilen satırı Büyük harfe dönüştürme

      //Bufferda bulunan verilerin dosyaya yazılmasını sağlar.     

      bw.flush();

      bw.close(); //BufferedWriter nesnesi kapatılıyor

      System.out.println("Dosya yazıldı");

    }catch (IOException e) {

      e.printStackTrace();

    }

  }

}

FileInputStream ve FileOutputStream Sınıfları

  • FileReader ve FileWriter sınıflarının aksine char bazlı işlem yapmazlar.
  • Byte bazlı dosya okuma ve yazma işlemleri için kullanılır.
  • Okuma işlemi için byte bazlı bir dizi atılır ve dosya içeriği bu diziye aktarılır.
  • Kullanımı için:

    import java.io.*;

  • Satırını kodunuza eklemeniz gerekmektedir.

Örnek-1

import java.io.*;

public class Stream {

  public static void main(String[] args) {

    File dosya =new File("C:\\Workspace\\Kitap.txt");

    byte[] dizi=new byte[(int)dosya.length()];

    try {//Veri okuma

      FileInputStream fs=new FileInputStream(dosya);

      fs.read(dizi);

      String data=new String(dizi);

      System.out.println(data);

      fs.close();

    }

    catch (Exception e) {

      e.printStackTrace();

    }

Örnek-2

    File kopya =new File("C:\\Workspace\\Kitapyedek.txt");

    try {//Veri yazma

      FileOutputStream fw=new FileOutputStream(kopya);

      fw.write(dizi);

      fw.close();

    } catch (IOException e) {

      e.printStackTrace();

    }

  }

}

BufferedInputStream ve BufferedOutputStream ile I/O İşlemleri

  • BufferedInputStream verileri Buffer üzerinden byte tabanlı olarak okuma yapmaktadır.
  • Karakter tabanlı yöntemden daha hızlı çalışır fakat Unicode desteği yoktur.
  • BufferedOutputStream ise FileOutputStream sınıfından türetilmiştir.
  • Verinin yazılması işleminde bir byte dizisine ihtiyaç duyulmaz ama String ifade sayısal (byte) olarak kodlanmalıdır.

Örnek-1

import java.io.*;

public class BufferedStreamExp {

  public static void main(String[] args) {

    File dosya=new File("C:\\Workspace\\Kitap.txt");

    byte[] dizi=new byte[(int)dosya.length()];

    try {

      FileInputStream fs=new FileInputStream(dosya);

      BufferedInputStream bs=new BufferedInputStream(fs);

      int okunan=0;

      while ((okunan=bs.read(dizi))!=-1) {

        String data=new String (dizi,0,okunan);

        System.out.print(data);

      }

    bs.close();

    }

    catch (IOException e) {

      e.printStackTrace();

    }

Örnek-2

    String text="Bu bir bufferedStream Örneğidir.";

    File f=new File("C:\\Workspace\\buffered.txt");

    try {

      FileOutputStream fs=new FileOutputStream(f,true);

      BufferedOutputStream bs=new BufferedOutputStream(fs);

      bs.write(text.getBytes());

      //Bufferda bulunan verilerin dosyaya yazılmasını sağlar.

      bs.flush();

      bs.close();

    }

    catch (IOException e) {

      e.printStackTrace();

    }

  }

}

Paylaşım , Takip İçin
0 0 votes
Article Rating

Bir Cevap Yazın

0 Yorum
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
HAYALİNDEKİ YAZILIM
%d blogcu bunu beğendi: