Buffered I/O
- Java kursu
- İleri seviye
- Ders 70/82
- 5 dk
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ırKaynak 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
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
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
try (____ r = Files.newBufferedReader(p)) {
String line = r.readLine();
}
try (BufferedReader r = Files.newBufferedReader(p)) {
String line = r.readLine();
}
Açıklama: Files.newBufferedReader bir BufferedReader döndürür.