Sobes.tech
Junior

Ποιο είναι το πλεονέκτημα της προσωρινής αποθήκευσης;

sobes.tech AI

Απάντηση από AI

Η προσωρινή αποθήκευση (buffering) στο Java I/O μειώνει τον αριθμό των προσβάσεων σε λειτουργίες εισόδου/εξόδου χαμηλού επιπέδου, αυξάνοντας σημαντικά την απόδοση. Η ανάγνωση/εγγραφή μεγάλων μπλοκ δεδομένων σε μία κλήση συστήματος είναι πιο αποδοτική από πολλές μικρές λειτουργίες.

Κατά την ανάγνωση: Το BufferedInputStream διαβάζει δεδομένα από το βασικό ρεύμα στη μνήμη buffer. Όταν ζητούνται μικρές ποσότητες δεδομένων, λαμβάνονται από το buffer χωρίς να χρειάζεται να προσπελάσει κάθε φορά την πηγή (δίσκο, δίκτυο). Μόνο όταν το buffer αδειάσει, γίνεται νέα ανάγνωση μπλοκ δεδομένων.

Κατά την εγγραφή: Το BufferedOutputStream αρχικά γράφει δεδομένα στο buffer. Η εγγραφή στο βασικό ρεύμα πραγματοποιείται είτε όταν το buffer γεμίσει είτε όταν καλέσετε τη μέθοδο flush(). Αυτό ελαχιστοποιεί τον αριθμό των συστημικών κλήσεων για εγγραφή.

Πλεονεκτήματα:

  • Μείωση επιπλέον κόστους: Μειώνει τον αριθμό των προσβάσεων στο λειτουργικό σύστημα και τον εξοπλισμό.
  • Αύξηση εύρους ζώνης: Τα δεδομένα μεταδίδονται σε μεγάλα μπλοκ.
  • Βελτίωση απόδοσης: Ο συνολικός χρόνος των λειτουργιών εισόδου/εξόδου μειώνεται.

Παράδειγμα χρήσης του 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) {
                // Επεξεργασία του διαβασμένου byte
                System.out.print((char) data);
            }

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