This is an old revision of the document!
Table of Contents
Είσοδος και Έξοδος του προγράμματος
Για την ανάγνωση και εγγραφή από εξωτερικές πηγές η Java χρησιμοποιεί ροές πληροφορίας, οι οποίες ονομάζονται streams. Τα streams διακρίνονται σε InputStream για διάβασμα δεδομένων από μία πηγή και Output Stream για εγγραφή δεδομένων σε μία πηγή. Οι πηγές από τις οποίες μπορεί να διαβάσει ή στις οποίες μπορεί να γράψει ένα stream είναι πάρα πολλές. Για παράδειγμα ένα stream ανάγνωσης ή εγγραφής μπορεί να εφαρμοστεί σε αρχείο, σε ένα tcp/ip socket ή ακόμη και σε ένα πίνακα από bytes.
Ανεξάρτητα από το πώς λειτουργούν εσωτερικά, όλα τα streams παρουσιάζουν το ίδιο απλό μοντέλο στα προγράμματα που τα χρησιμοποιούν:
- Ένα stream είναι μια ακολουθία πληροφορίας (ροή από bytes).
- Ένα πρόγραμμα χρησιμοποιεί ένα input stream για να διαβάσει δεδομένα από μια πηγή.
- Ένα πρόγραμμα χρησιμοποιεί ένα output stream για να γράψει δεδομένα σε έναν προορισμό.
Στις περιπτώσεις που θέλουμε να διαβάσουμε συμβολοσειρές (π.χ. αρχεία κειμένου), δηλαδή ροές χαρακτήρων τότε η Java παρέχει τις εξειδικευμένες κλάσεις java.io.Reader και java.io.Writer οι οποίες εκτός από το να γράφουν και να διαβάζουν ροές πληροφορίας, κωδικοποιούν τις ροές χαρακτήρων σε ροές δυαδικής πληροφορίας (ροές bytes) και αντίστοφά κατά την εγγραφή ή την ανάγνωση σε/από την απομακρυσμένη πηγή. Μέσω αυτών των κλάσεων απλοποιείται η ανάγνωση και η εγγραφή ροών χαρακτήρων από εξωτερικές πηγές.
Οι κλάσεις στο πακέτο java.io για εγγραφή και ανάγνωση από απομακρυσμένες πηγές συνοψίζονται στις εξής:
Δυαδικά δεδομένα (ροές bytes) | Δεδομένα κειμένου (ροές χαρακτήρων) | |||
---|---|---|---|---|
Input | Output | Input | Output | |
Basic Class | InputStream | OutputStream | Reader | Writer |
Arrays | ByteArrayInputStream | ByteArrayOutputStream | CharArrayReader | CharArrayWriter |
Files | FileInputStream | FileOutputStream | FileReader | FileWriter |
Pipes | PipedInputStream | PipedOutputStream | PipedReader | PipedWriter |
Strings | StringReader | StringWriter | ||
Data (big-endian) | DataInputStream | DataOutputStream | ||
Formatted Data | PrintStream | PrintWriter | ||
Objects | ObjectInputStream | ObjectOutputStream |
Είσοδος και έξοδος από την κονσόλα
Προκειμένου να διαβάσετε και να γράψετε από την κονσόλα η Java διαθέτει την κλάση System, η οποία διαθέτει 3 στατικές μεταβλητές τύπου Stream. Συγκεκριμένα, διατίθενται τα streams (τύπου PrintStream) System.out (STDOUT) και System.err (STDERR) για γράψιμο στην κονσόλα, καθώς και το stream (τύπου InputStream)System.in (STDIN) για διάβασμα από την κονσόλα.
Στις επόμενες ενότητες θα δούμε παραδείγματα εκτύπωσης και διαβάσματος από την κονσόλα.
Προηγούμενο: Η κλάση File | Περιεχόμενα | Επόμενο: Ροές Δεδομένων |