Bu bölümde sizlere Java’da bir dosyaya veri yazmayı ve ardından okumayı göstereceğiz. İlk örneğimizde bir string değişkeni içerisinde saklanan veriyi disk üzerinde bir .txt (metin) dosyasına yazmayı anlatacağız.
String str = "Bunu dosyaya yazdir"; File file = new File("dosya.txt"); if (!file.exists()) { file.createNewFile(); } FileWriter fileWriter = new FileWriter(file, false); BufferedWriter bWriter = new BufferedWriter(fileWriter); bWriter.write(str); bWriter.close();
Java’da disk üzerindeki dosyalar ve klasörlerle iletişim sağlamak için File sınıfından faydalanırız. File sınıfı disk üzerinde belirtilen konumdaki bir dosya ya da klasörü kod içerisinden tanımlamak için kullanılır. Yukarıdaki kod parçasına bakarsak File sınıfının yapıcısı (Constructor) içerisinde dosyanın adı dosya.txt olarak belirtilmiş. Bu şekilde disk üzerindedosya.txt adında bir dosyaya işlem yapmak için o dosyayı bir değişkene atamış oluyoruz.exists metodu dosyanın disk üzerinde önceden var olduğunu kontrol etmek için kullanılıyor. Eğer dosya diskte henüz yoksa createNewFile ile diskte dosya.txt adında bir dosya oluşturuyoruz.
Dosyaya metin yazma işlemini başlatmak için FileWriter sınıfından faydalanırız. FileWriter sınıfı File tipindeki bir değişkeni yazma amacıyla kullanmaya yarar. Yapıcı içerisinde yer alan boolean tipindeki değer dosyanın append modunda yazılmasını sağlar. append modu dosyanın içerisinde yer alan mevcut metinlere dokunmadan dosyanın son karakterinden itibaren yazma işlemini başlatacaktır. Yukarıdaki kod içerisinde bu değer false olduğundandosya.txt her seferinde baştan yazılacaktır.
BufferedWriter sınıfı ise dosyaya bir kayıt yazarken bize ayarlanabilir bir tampon bellek (Buffer) sunacaktır. Bu işlem olmadan yazma işlemi yapılması karakterlerin anında byte’a dönüştürülüp dosyaya yazılmasına yol açacak ve programın verimsiz çalışmasına yol açacaktır
write metodu yazma işlemini başlatır. Dosyaya yazma işlemimiz tamamlandıktan sonraclose komutuyla dosya ile olan işlemi tamamlarız ve diskte metin dosyamız oluşur.
Dosyayı okumak içinse aşağıdaki kodu kullanırız:
FileReader fileReader = new FileReader(file); String line; BufferedReader br = new BufferedReader(fileReader); while ((line = br.readLine()) != null) { System.out.println(line); } br.close();
write metodu yazma işlemini başlatır. Dosyaya yazma işlemimiz tamamlandıktan sonraclose komutuyla dosya ile olan işlemi tamamlarız ve diskte metin dosyamız oluşur.Buradaki file değişkeni bir önceki örnekte oluşturulan File sınıfındaki değişkendir vedosya.txt adındaki dosyamızı belirtir. Burada dosyayı okuma amacıyla FileReader adındaki sınıfı kullanmamız gerekir. Daha önceki örnekte olduğu gibi BufferedReader yardımıyla dosyamızı okumaya başlarız. Dosya içerisindeki her satır line adındaki bir değişkene atılır ve dosyanın sonuna gelene kadar bütün satırlar konsola yazdırılır (line != null). İşlem bitirildikten sonra BufferedReader close metoduyla kapatılır.NOT: BufferedReader bize yüksek bir tampon bellek sağlar. BufferedReader kullanılmazsaread metodu her çağırıldığında dosyadan byte’lar çekilir, karakterlere dönüştürülür ve döndürülür. Bu da programın performansının düşmesine yol açar.