Sobes.tech
Junior

Wat is het voordeel van buffering?

sobes.tech AI

Antwoord van AI

Buffering in Java I/O vermindert het aantal toegangspogingen tot low-level invoer- en uitvoerbewerkingen, wat de prestaties aanzienlijk verbetert. Het lezen/schrijven van grote blokken gegevens in één systeemoproep is efficiënter dan meerdere kleine operaties.

Bij lezen: BufferedInputStream leest gegevens van de basisstroom naar het buffergeheugen. Wanneer kleine hoeveelheden gegevens worden aangevraagd, worden ze uit de buffer gehaald zonder telkens toegang te hoeven krijgen tot de bron (schijf, netwerk). Alleen wanneer de buffer leeg is, wordt een nieuwe gegevensblok gelezen.

Bij schrijven: BufferedOutputStream schrijft eerst gegevens naar de buffer. Het schrijven naar de basisstroom gebeurt wanneer de buffer vol is of wanneer de methode flush() wordt aangeroepen. Dit minimaliseert het aantal systeemoproepen voor schrijven.

Voordelen:

  • Vermindering van overhead: Vermindert het aantal toegangspogingen tot het OS en de hardware.
  • Toename van doorvoer: Gegevens worden in grote blokken overgedragen.
  • Verbeterde prestaties: De totale tijd van invoer- en uitvoerbewerkingen wordt verkort.

Voorbeeld van gebruik van BufferedInputStream:

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) {
                // Verwerking van de gelezen byte
                System.out.print((char) data);
            }

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