Sobes.tech
Junior

Mi a bufferelés előnye?

sobes.tech MI

Válasz az MI-től

A Java I/O-ban a pufferelés csökkenti az alacsony szintű bemenet/kimenet műveletekhez való hozzáférések számát, ami jelentősen növeli a teljesítményt. Nagy adatsorok olvasása/írása egy rendszerhívással hatékonyabb, mint sok kis művelet.

Olvasáskor: a BufferedInputStream az alapfolyamból olvassa az adatokat a pufferbe. Kis adatmennyiségek kérésénél azokat a pufferből veszi, anélkül, hogy minden alkalommal hozzáférne a forráshoz (lemez, hálózat). Csak akkor olvas újra, amikor a puffer kiürül.

Íráskor: a BufferedOutputStream először az adatokat a pufferbe írja. A tényleges írás az alapfolamba akkor történik, amikor a puffer megtelik vagy a flush() metódus hívásra kerül. Ez minimalizálja a rendszerhívások számát.

Előnyök:

  • Költségcsökkentés: Csökkenti az OS és a hardver hozzáféréseinek számát.
  • Sávszélesség növelése: Nagy blokkokban továbbítja az adatokat.
  • Teljesítmény javítása: Az összes bemenet/kimenet művelet időtartama csökken.

A BufferedInputStream használatának példája:

import java.io.FileInputStream;
import java.io.BufferedInputStream;
import java.io.IOException;

public class BufferedReaderExample {
    public static void main(String[] args) {
        try (FileInputStream fileInputStream = new FileInputStream("example.txt");
             BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream)) {

            int data;
            while ((data = bufferedInputStream.read()) != -1) {
                // Olvasott bájt feldolgozása
                System.out.print((char) data);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}