Java Dosya Okuma İşlemleri

Share

Java, dosya okuma ve yazma işlemlerinin yapılabilmesi için birden fazla sayıda yöntem geliştirmiştir. Bu yazıda, Java’da dosya okuma işlemi ile ilgili yöntemlere yer vereceğiz.

Java Dosya Okuma Yöntemleri

Yukarıda da ifade ettiğimiz üzere Java’da file reading işlemi için kullanılabilecek bir den fazla metod ve yöntem mevcut. Bu metod ve yöntemler, farklı ihtiyaç ve gerekliliklere göre programcılar tarafından tercih edilebilmekte. Java’da dosya okuma işlemleri için kullanılan başlıca 5 farklı metod mevcut. Bunları şu şekilde sıralamak mümkün;

  1. BufferedReader Class aracılığıyla okuma
  2. FileReader Class aracılığıyla okuma
  3. Scanner Class aracılığıyla okuma
  4. FileInputStream aracılığıyla okuma
  5. text dosyasını String olarak okuma

BufferedReader Class ile dosya okuma

Dosya okuma işlemlerinde en çok kullanılan yöntemlerden biri, Buffered Reader class’ından obje oluşturmak şeklindedir. Aşağıda buna bir örnek ve bu örneğin detaylı izahı yer almaktadır.

public class Ornek {
    public static void main(String[] args) throws IOException {
        //Dosya okuma işlemi yapan metodlar, oluşması muhtemel bazı problemlerden ötürü hata fırlatır.
        //Bu problemler aranan dosyanın bulunamaması veya okunamayan karakterler içermesi şeklinde olabilir.
        //Bu exception'ları try-catch ile handle etmezsek veya metod signature'da throws ile bildirmezsek, Java compiletime hatası verir.

        BufferedReader br = new BufferedReader(new FileReader("src/main/java/day27exceptions/File1.txt"));
        String str;
        while ((str = br.readLine()) != null){
            System.out.println(str);
        }

        //Görüldüğü üzere BufferedReader classndan bir obje oluşturduk. Daha sonra Constructor içerisinde
        // FileReader objesi oluşturduk ve onun parantezi içerisinde dosyamızın konumunu yani path'ini ekledik.
        // Bu konumu direkt olarak File class'ından oluşturduğumuz bir objeye atayarak da farklı yerlerde kullanabilirdik.
        // Asagıdaki ornekte olduğu gibi;

        File dosyaKonumu = new File("src/main/java/day27exceptions/File1.txt");
        BufferedReader ornek = new BufferedReader(new FileReader(dosyaKonumu));

        // Son olarak while döngüsü ile alınan satır null yani boş olana kadar
        // text dosyası içerisindeki metni satır satır aldık ve yazdırdık. 

    }
}

FileReader Class ile dosya okuma

FileReader Class, bir dosyada yer alan metni, karakter karakter okumaya imkan verir. Tıpkı BufferedReader yönteminde olduğu gibi, burada da FileReader class’ından bir obje oluşturmak ve Constructor içerisinde, okunacak dosyanın konumu girilir. Aşağıda bu yöntemin bir örneğini ve detaylı bir açıklamasını görebilirsiniz.

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

        FileReader ornek = new FileReader("src/main/java/day27exceptions/File1.txt");
        int s;
        while ((s = ornek.read()) != -1) {
            System.out.print((char) s);
        }

        // FileReader objesi oluşturup Constructor içerisinde file path'i yazdık.
        // FileReader, dosyadaki metni karakter karakter okuyacak ve onların ASCII değerlerini alacak.
        // Okunacak herhangi bir karakter kalmayınca ise bize -1 değerini verecektir.
        // Bu yüzden bir ASCII değerleri tek tek almak ve sonucun -1 olup olmadığını kontrol etmek için
        // bir int oluşturduk. While döngüsü ile, bu int -1 olmadığı müddetçe, ASCII değeri al
        // onu karakter'e çevir ve yazdır dedik. println yerine print kullandık. Zira alt satıra geçme işlemini
        // Java otomatik olarak gerçekleştirecektir.


    }
}

Scanner Class ile dosya okuma

Genellikle kullanıcıdan veri almak için kullandığımız Scanner Class, içerisindeki metotlar sayesinde dosya okuma işlemine de imkan sunmaktadır. Aşağıda bu işlem için gerçekleştirilmesi gereken adımlar sıralanmıştır.

public class Ornek {
    public static void main(String[] args) throws FileNotFoundException {

        File dosyaKonumu = new File("src/main/java/day27exceptions/File1.txt");
        Scanner oku = new Scanner(dosyaKonumu);
        while (oku.hasNextLine())
            System.out.println(oku.nextLine());
        //İlk örnekte anlattığımız şekilde bir file objesi oluşturduk ve içerisinde dosyamızın konumunu girdik. 
        // Ardından Scanner objesi oluşturarak, Constructor içerisine konumumuzu girdik. 
        // Son olarak while döngüsü oluşturup, hasNextLine() metodu ile dosya içerisindeki satırları tek tek okuduk. 
        // Alınacak satır kalmayınca hasNextLine() bize false değeri döndürecek ve program sonlanacaktır. 

// Bu islem while loop kullanılmadan Scanner içerisindek useDelimiter() metodu ile
// şu şekilde de yapılabilmektedir

        oku.useDelimiter("\\Z");
        System.out.println(oku.next());

    }

}

FileInputStream aracılığıyla okuma

Tıpkı FileReader’da olduğu gibi FileInputStream, bize bir dosyadaki metni karakter karakter okuma imkanı sunar. Yapılan işlemler, FileReader’daki ile hemen hemen aynıdır.

public class Ornek {

    public static void main(String[] args) throws IOException {
        FileInputStream oku = new FileInputStream("src/main/java/day27exceptions/File1.txt");
        int i;
        while ((i = oku.read()) != -1){
            System.out.print((char) i);
        }
    }
    // Burada yapılan işlemleri daha iyi anlayabilmek için FileReader örneğine bakın.
}

text dosyasını String olarak okuma

Bir text dosyasını String olarak okumak mümkündür. Bunun için yeni bir String objesi oluşturmak ve Constructor içerisine, Files class’taki readAllBytes() metodu ile dosyadan veri çekmek gerekiyor. Aşağıda bunun bir örneği mevcuttur.

public class Ornek {

    public static String dosyaOku(String dosyaKonumu)throws Exception {
        String veri = "";
        veri = new String(Files.readAllBytes(Paths.get(dosyaKonumu)));
        return veri;
    }
    public static void main(String[] args) throws Exception {

            String veri = dosyaOku("src/main/java/day27exceptions/File1.txt");
            System.out.println(veri);
    }

}

Bu yazıda, Java dosya okuma işlemi nasıl yapılır? sorusuna cevap vermeye çalıştık. Gördüğünüz herhangi bir hata veya eksiği bizlerle paylaşmaktan çekinmeyin.

Author