Streams Streams: κανάλια ροής δεδομένων Κανάλια εισόδου: ανάγνωση δεδομένων Κανάλια εξόδου: αποστολή δεδομένων Συνήθεις πηγές και προορισμοί δεδομένων: 1. Μνήμη 2. Δίσκος 2. Δικτυακό κανάλι
Κατηγορίες Streams 1. Character streams Χρησιμοποιούνται για τη ροή χαρακτήρων 16-bit (UNICODE) Κατάλληλα για μεταφορά πολύγλωσσου text. Υπερκλάσεις: Reader και Writer 2. Byte streams Χρησιμοποιούνται για μεταφορά 8-bit δεδομένων. Κατάλληλα για μεταφορά δυαδικών δεδομένων π.χ. pixels από εικόνες ή δείγματα ήχου. Υπερκλάσεις: Input Stream, OutputStream
Διαδικασίες ανάγνωσης-εγγραφής Ανάγνωση Άνοιγμα καναλιού ανάγνωσης while (δεδομένα προς ανάγνωση) while (δεδομένα προς ανάγνωση){ Ανάγνωση δεδομένων } Κλείσιμο καναλιού ανάγνωσης Κλείσιμο καναλιού ανάγνωσηςΕγγραφή Άνοιγμα καναλιού εγγραφής Άνοιγμα καναλιού εγγραφής while (δεδομένα προς εγγραφή) while (δεδομένα προς εγγραφή) { Εγγραφή δεδομένων Εγγραφή δεδομένων} Κλείσιμο καναλιού εγγραφής Κλείσιμο καναλιού εγγραφής
ReaderΜέθοδοι int read(): Επιστρέφει τον χαρακτήρα που διάβασε υπό μορφή ακεραίου (16-bit, ) ή -1 εάν κατέληξε στο τέλος του stream int read(char[] buf): Εγγράφει το πολύ buf.length χαρακτήρες στο array buf. Επιστρέφει τον πλήθος των χαρακτήρων που διάβασε ή -1 εάν φτάσει στο τέλος του stream void close(): Κλείνει το κανάλι εισόδου: Περαιτέρω εντολές ανάγνωσης εγείρουν εξαίρεση IOException Όλες οι μέθοδοι εγείρουν IOException, οπότε πρέπει να τοποθετούνται σε try{} catch(IOException){} blocks
WriterΜέθοδοι void write(int c): Εγγραφή ενός χαρακτήρα (τα 16 LSB του ακεραίου c) void write(char[ ] buf): Εγγραφή των χαρακτήρων που εμπεριέχονται στο array buf void write(String str): Εγγραφή του string str στο κανάλι εξόδου void close(): Κλείσιμο του καναλιού εξόδου
InputStreamΜέθοδοι int read(): Επιστρέφει το επόμενο byte που διάβασε (8-bit, 0-255) ή -1 εάν κατέληξε στο τέλος του stream int read(byte[ ] b): Εγγράφει το πολύ b.length bytes στο array buf. Επιστρέφει τον πλήθος των bytes που διάβασε ή -1 εάν φτάσει στο τέλος του stream void close(): Κλείνει το κανάλι εισόδου: Περαιτέρω εντολές ανάγνωσης εγείρουν εξαίρεση IOException
OutputStreamΜέθοδοι void write(int c): Εγγραφή ενός χαρακτήρα (τα 8 LSB του ακεραίου c) void write(byte[ ] buf): Εγγραφή των bytes που εμπεριέχονται στο array buf void flush() void close(): Κλείσιμο του καναλιού εξόδου
DataInputStream, Data OutputStream Υποκλάσεις των InputStream και OutputStream αντίστοιχα Προσφέρουν τη δυνατότητα ανάγνωσης και εγγραφής πρωτογενών τύπων δεδομένων (floats,integers,doubles) Προσφέρουν τη δυνατότητα ανάγνωσης και εγγραφής πρωτογενών τύπων δεδομένων (floats,integers,doubles) Οι κλάσεις DataInputStream, DataOutputStream παραλαμβάνουν και αποστέλλουν δεδομένα μέσω προϋπαρχόντων InputStreams και OutputStreams αντίστοιχα Κατασκευαστές: DataInputStream(InputStream input) DataOutputStream(OutputStream output)
Μέθοδοι ανάγνωσης-εγγραφής πρωτογενών τύπων δεδομένων DataInputStreamDataOutputStream char readChar()void writeChar() int readInt()void writeInt() float readFloat()void writeFloat() double readDouble()void writeDouble() String readLine()void writeUTF()
FileInputStream, FileOutputStream Διαβάζουν και αποστέλλουν bytes δεδομένων από και προς αρχεία του τοπικού συστήματος αρχείων FileInputStreamFileOutputStream Κατασκευαστές: FileInputStream(String filename) FileInputStream(File fileSource) Κατασκευαστές: FileOutputStream(String filename) FileOutputStream(File fileSource) FileOutputStream(String filename, boolean append) FileIOutputStream(File file,boolean append) Μέθοδοι: int read( ); Int read(byte[ ] buf); void close( ); Μέθοδοι: void write(int b); void write(byte[ ] buf ); void close( );
Αντιστοίχιση αντικειμένων stream σε εισόδους-εξόδους Δύο τρόποι 1. Με μεθόδους κλάσεων που επιστρέφουν stream objects ( όπως λχ οι μέθοδοι getInputStream( ) και getOutputStream( ) της κλάσης Socket) 2. Αρχικοποιώντας stream objects με constructors που δέχονται ως ορίσματα source ή destination δεδομένων. Πχ οι κατασκευαστές των κλάσεων DataInputStream και DataOutputStream δεχονται ως ορίσματα αντικείμενα της κλάσης InputStream και OutputStream μέσω των οποίων συνδέονται με τα αντίστοιχα κανάλια εισόδου και εξόδου