CodeBlanks Logo Icon CodeBlanks

Buffered I/O

BufferedInputStream ve BufferedOutputStream ile verimli I/O öğrenirsin.

Buffered I/O

BufferedReader ve BufferedWriter, her okuma/yazmada diske gitmek yerine bir arabellek kullanır. Bu, çok sayıda küçük işlemde performansı büyük ölçüde artırır.

try (BufferedReader r = Files.newBufferedReader(p)) {
    String line = r.readLine();
}

try-with-resources ile akış otomatik kapanır. Bu, kaynak sızıntısını önler. Satır satır okuma için lines() akışı da kullanılabilir; bu, Stream API ile işlem yapmaya uygundur.

try-with-resources

Java 7+'da try-with-resources ile açılan kaynaklar otomatik kapanır. Bu, dosya ve akış sızıntılarını önler.

try (BufferedReader r = Files.newBufferedReader(p)) {
    // r kullan
}  // r.close() otomatik çağrılır

Kaynak AutoCloseable arayüzünü uygulamalıdır. Birden çok kaynak noktalı virgülle ayrılır. Bu, hatasız kaynak yönetiminin standart yoludur ve üretim kodunda zorunlu sayılır.

Uygulama BufferedReader ile satır oku

Bir BufferedDemo sınıfında main yaz; Files.createTempFile("b", ".txt") ile dosya oluştur, Files.writeString(p, "Merhaba") ile yaz. try (BufferedReader r = Files.newBufferedReader(p)) bloğu içinde r.readLine() ile ilk satırı oku ve System.out.println ile yazdır.

Başlangıç kodu

Main.java
import java.nio.file.*;
import java.io.*;

// BufferedDemo sınıfında main yaz

// createTempFile ve writeString ile kur; try-with-resources ile BufferedReader aç ve readLine ile yazdır

Örnek çözüm

Main.java
import java.nio.file.*;
import java.io.*;

class BufferedDemo {
    public static void main(String[] args) throws Exception {
        Path p = Files.createTempFile("b", ".txt");
        Files.writeString(p, "Merhaba");
        try (BufferedReader r = Files.newBufferedReader(p)) {
            System.out.println(r.readLine());
        }
    }
}

Beklenen çıktı

Merhaba

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 BufferedReader ne zaman tercih edilir?

  • Tek seferde tüm dosyayı okurken
  • Çok sayıda küçük okumada Doğru cevap
  • Yalnızca ikili dosyada
  • Yalnızca ağ iletişiminde

Açıklama: BufferedReader çok sayıda küçük okumada arabellek kullanarak hız verir.

2 Buffered I/O kavramlarını eşleştir

Kavram Anlamı
BufferedReader Arabellekli okuma
BufferedWriter Arabellekli yazma
newBufferedReader Files üzerinde açar
lines() Satır akışı verir

3 BufferedReader çağrısını tamamla

Soru
try (____ r = Files.newBufferedReader(p)) {
    String line = r.readLine();
}
Cevap
try (BufferedReader r = Files.newBufferedReader(p)) {
    String line = r.readLine();
}

Açıklama: Files.newBufferedReader bir BufferedReader döndürür.

İleri seviye bölümündeki tüm dersler