Java ile Dosya İşlemleri: File, FileReader ve FileWriter Kullanımı

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16
Java IO: Dosyalarla Kalıcı Veri Yönetimi



1. File Sınıfı: Dosya ve Dizini Tanımak​


File sınıfı, dosyanın kendisini değil, dosyanın yolunu (path) temsil eder. Bir dosyanın var olup olmadığını kontrol etmek, yeni dosya oluşturmak veya silmek için kullanılır.

Java:
File dosya = new File("notlar.txt");

if (dosya.exists()) {
System.out.println("Dosya zaten var.");
} else {
dosya.createNewFile(); // Yeni boş dosya oluşturur
System.out.println("Dosya oluşturuldu.");
}

2. FileWriter: Dosyaya Veri Yazmak​


Dosyaya karakter tabanlı veri yazmak için kullanılır. Varsayılan olarak dosyayı her açtığında içini siler ve baştan yazar. Eğer mevcut verinin sonuna ekleme yapmak istiyorsanız, ikinci parametreyi true yapmalısınız.

Java:
try (FileWriter writer = new FileWriter("notlar.txt", true)) {
writer.write("Merhaba Java!\n");
writer.write("Dosya işlemleri çok kolay.");
} catch (IOException e) {
e.printStackTrace();
}

İpucu: try-with-resources yapısını kullanmak (parantez içinde tanımlama), dosyanın işlem bitince otomatik olarak kapatılmasını sağlar.

3. FileReader: Dosyadan Veri Okumak​


FileReader, dosyayı karakter karakter okur. Ancak bu yöntem büyük dosyalar için yavaştır. Genellikle performans için BufferedReader ile birlikte kullanılır.

Java:
try (FileReader reader = new FileReader("notlar.txt")) {
int karakter;
while ((karakter = reader.read()) != -1) {
System.out.print((char) karakter);
}
} catch (IOException e) {
e.printStackTrace();
}

4. Performansın Sırrı: BufferedReader ve BufferedWriter​


Doğrudan diskten karakter karakter okumak yerine, verileri bir tampon (buffer) belleğe alıp satır satır okumak çok daha hızlıdır.

SınıfAvantajı
BufferedWriternewLine() metodu ile kolayca alt satıra geçer ve yazma hızını artırır.
BufferedReaderreadLine() metodu ile dosyayı satır satır okumanızı sağlar.

Java:
// Satır satır okuma örneği
try (BufferedReader br = new BufferedReader(new FileReader("notlar.txt"))) {
String satir;
while ((satir = br.readLine()) != null) {
System.out.println(satir);
}
} catch (IOException e) {
e.printStackTrace();
}

5. Java NIO: Modern ve Daha Hızlı Yaklaşım (Java 7+)​


Eğer küçük bir dosyanın tüm içeriğini tek seferde okumak veya yazmak istiyorsanız, Java NIO (java.nio.file.Files) çok daha pratik metotlar sunar:

Java:
Path yol = Paths.get("notlar.txt");

// Tümünü oku
List<String> satirlar = Files.readAllLines(yol);

// Tümünü yaz
Files.write(yol, "Tek satırda yazdım".getBytes());



Sonuç

Java'da dosya işlemleri karakter akışları (Reader/Writer) ve bayt akışları (InputStream/OutputStream) olarak ikiye ayrılır. Metin dosyalarıyla çalışırken her zaman Reader/Writer ailesini ve hız için Buffered katmanını tercih etmelisiniz.
 
Geri
Üst