Week 9: Input / Output Διάλεξη #16: Είσοδος / Έξοδος [Input / Output]

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Τύποι δεδομένων και τελεστές,
Advertisements

ΕΙΣΑΓΩΓΗ ΣΤΟ DOS (Disk Operating System)
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
Τεχνολογία ΛογισμικούSlide 1 Έλεγχος Καταψύκτη (Ada) Τεχνολογία ΛογισμικούSlide 39 with Pump, Temperature_dial, Sensor, Globals, Alarm; use Globals ; procedure.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 9: Input / Output Εβδομάδα 8: Είσοδος / Έξοδος [Input / Output]
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές Εξαιρέσεις.
1 Εισαγωγή στα Streams Υπάρχουν πάνω από 60 κλάσεις για input/output στο πακέτο Υπάρχουν πάνω από 60 κλάσεις για input/output στο πακέτο java.io.*; java.io.*;
Γράφημα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Συνδυαστικό αντικείμενο που αποτελείται από.
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Data Types, Variables, and Arithmetic.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Streams and Files.
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
Streams Streams: κανάλια ροής δεδομένων Κανάλια εισόδου: ανάγνωση δεδομένων Κανάλια εξόδου: αποστολή δεδομένων Συνήθεις πηγές και προορισμοί δεδομένων:
Streams, Sockets & I/O Θ. Βαρβαρίγου Καθηγ. ΕΜΠ Τηλ
Κεφάλαιο 4 Εξαιρέσεις. Όταν σε ένα πρόγραμμα συμβεί κάποιο λάθος, ο κώδικας εγείρει (throw) μία εξαίρεση. Στη Java oι εξαιρέσεις εκπροσωπούνται από αντικείμενα.
ΗΥ Παπαευσταθίου Γιάννης1 Clock generation.
6/26/2015HY220: Ιάκωβος Μαυροειδής1 HY220 Asynchronous Circuits.
Κεφάλαιο 3 Τύποι Δεδομένων - Τελεστές. Πρωτογενείς τύποι δεδομένων: int, float, double, chars ΤύποςΌνομαΜέγεθος byte 8-bit signed, short 16-bit.
Εισαγωγή στη JAVΑ (μέρος Β’) Βασίλης Παπαταξιάρχης Μάθημα: Αντικειμενοστραφής Προγραμματισμός Διδάσκουσα: Ιζαμπώ Καράλη Τμήμα Πληροφορικής.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java.
Είσοδος – Έξοδος – Μορφοποιήσεις - Εξαιρέσεις στη Java Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών 1 Βελώνης Γεώργιος – Καθηγητής Πληροφορικής ΠΕ 20.
Κωδικός Θ: ΤΠ4003, Κωδικός Ε: ΤΠ4103 (ΜΕΥ/Υ) Ώρες (Θ - ΑΠ - Ε): Προαπαιτούμενα: ΤΠ2003,2103.
1 Προγραμματισμός Διαδικτύου Ενότητα 3 : Κατηγορίες και κληρονομικότητα Ιωάννης Τσούλος Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Αντικειμενοστραφής Προγραμματισμός (Θ) Ενότητα 5: Είσοδος/ Έξοδος Κλειώ Σγουροπούλου Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Ανοικτά Ακαδημαϊκά Μαθήματα στο.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Δικτυακός Προγραμματισμός (Θ)
Μαθαίνω με “υπότιτλους”
Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών
Εισαγωγή στον Προγ/μό Η/Υ
Εισαγωγή στον Προγ/μό Υπολογιστών
Αντικειμενοστραφής Προγραμματισμός ΙΙ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Βασικές έννοιες Αντικειμενοστραφούς Προγραμματισμού ΙΙ
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Εισαγωγή στον Προγ/μό Υπολογιστών
Βασικές έννοιες Αντικειμενοστραφούς Προγραμματισμού ΙΙ
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Αντικειμενοστραφής Προγραμματισμός ΙΙ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Δομές διακλάδωσης, επαναλήψεις, μέθοδοι
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΔΟΜΕΣ ΕΛΕΓΧΟΥ(if-else, switch) και Λογικοί τελεστές / παραστάσεις
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΚΕΦΑΛΑΙΟ 2 ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΤΗΣ JAVA
Πρωτογενείς τύποι δεδομένων
Κεφάλαιο 10 Streams.
Ειδικά Θέματα στον προγραμματισμό Υπολογιστών
Αναδρομικές Εξισώσεις και Αφηρημένοι Τύποι Δεδομένων
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ
Find: φ σ3 = 400 [lb/ft2] CD test Δσ = 1,000 [lb/ft2] Sand 34˚ 36˚ 38˚
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Διάλεξη #10: Εκτέλεση Java χωρίς το BlueJ
Wrapper Classes, Abstract Classes and Interfaces
Τύποι δεδομένων και τελεστές,
Υπο-τύποι και πολυμορφισμός
Εξαιρέσεις [Exceptions]
Ομαδοποίηση αντικειμένων
Μεταγράφημα παρουσίασης:

Week 9: Input / Output Διάλεξη #16: Είσοδος / Έξοδος [Input / Output]

Μηχανισμοί εισόδου/εξόδου [I/O mechanisms] Όλα τα προγράμματα χρειάζονται είσοδο/έξοδο για να επικοινωνούν με το περιβάλλον τους. Η είσοδος/έξοδος γίνεται μέσω κειμένου, γραφικών, αισθητήρων, εξωτερικών συσκευών, κλπ. Για προσωπικούς υπολογιστές: οθόνη, πληκτρολόγιο, ποντίκι, δίκτυο, σύστημα αρχείων. Για εμφυτευμένα [embedded] υπολογιστικά συστήματα: αισθητήρες, άλλοι μηχανισμοί.

Μηχανισμοί εξόδου Αποτελέσματα μεθόδων (BlueJ) Κείμενο σε οθόνη, εκτυπωτή, κλπ. Στοιχεία [data] σε αρχείο Στοιχεία προς άλλα προγράμματα, δίκτυο, κλπ. Παράθυρα, γραφικά (GUI)

Μηχανισμοί εισόδου Παράμετροι μεθόδων (BlueJ) Παράμετροι γραμμής εντολών [command line] Κείμενο από πληκτρολόγιο Στοιχεία [data] από αρχεία Στοιχεία από προγράμματα, το δίκτυο, κλπ. Είσοδος από ΓΠΕ [GUI] (δράσεις ποντικιού – πίεση πλήκτρων, επιλογή μενού, κλπ.)

Μηχανισμοί εισόδου/εξόδου [I/O] της Java Οι κλάσει παρέχουν αρκετές διαπροσωπίες προς ρεύματα [streams] και άλλες «επινοήσεις» εισόδου/εξόδου [IO concepts].

Ρεύματα [Streams] Ρεύμα [stream] διαβάζει Προορισμός γράφει Πηγή [source] Πρόγραμμα [reads] Προορισμός [destination] γράφει Πρόγραμμα [writes]

Ιδιωματισμοί Java [ java idioms] Εγγραφή Άνοιξε το ρεύμα [stream] while(περισσότερα στοιχεία) γράψε στοιχεία στο ρεύμα Κλείσε το ρεύμα Ανάγνωση Άνοιξε το ρεύμα [stream] while(περισσότερα στοιχεία) διάβασε στοιχεία από το ρεύμα Κλείσε το ρεύμα

Χαρακτήρες και Bytes Ρεύμα χαρακτήρων Ρεύμα byte ...Reader, ...Writer ...Stream Εγγραφή και ανάγνωση δυαδικών στοιχείων [binary data] (αριθμοί, εικόνες, ήχος,… Εγγραφή και ανάγνωση κειμένου

Ρεύματα και αναγνώστες/εγγραφείς Ρεύματα [streams] Διαβάζουν/γράφουν bytes Μπορεί να χρησιμοποιηθούν για οποιοδήποτε τύπο δεδομένων Χρησιμοποιούνται για αποθήκευση στοιχείων σε σειριακή μορφή ["serialisation"] Αναγνώστης/εγγραφέας [reader/writer] Διαβάζει/γράφει χαρακτήρες Χρησιμοποιούνται για είσοδο/έξοδο κειμένου Προτιμούνται για είσοδο/έξοδο κειμένου

Η ιεραρχία Stream (ελλιπής) (μόνο έξοδος, ελλιπής) OutputStream FilterOutputStream FileOutputStream PipedOutputStream PrintStream BufferedOutputStream

System.in και System.out System.out.println("trust no-one"); class System { public static final PrintStream err; public static final InputStream in; public static final PrintStream out; ... } Η κλάση System (για ιστορικούς λόγους) χρησιμοποιεί τις PrintStream και InputStream για I/O. Ο προτιμητέος τρόπος για είσοδο/έξοδο κειμένου είναι μέσω των «Reader/Writer» κλάσεων.

Μεθοδοι της PrintStream public void print(boolean b) public void print(char c) public void print(double d) public void print(float f) public void print(int i) public void print(long l) public void print(String s) public void print(Object o) public void println(boolean b) public void println (char c) public void println (double d) public void println (float f) public void println (int i) public void println (long l) public void println (String s) public void println (Object o)

Ανάγνωση Παράδειγμα Τι σημαίνουν όλα αυτά; BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { String inputLine = reader.readLine(); } catch(IOException exc) // an IO error occurred Τι σημαίνουν όλα αυτά;

Απόληξη στοιχείων και επεξεργασία [Data Sink vs Processing] Ρεύματα απόληξης στοιχείων Ρεύματα επεξεργασίας

Data Sink vs Processing (2) Τα «ρεύματα απόληξης στοιχείων» [data sink streams] είναι υλοποιήσεις της διαπροσωπείας “stream” οι οποίες παρέχουν πρόσβαση σε διάφορες πηγές και προορισμούς στοιχείων (αλλά δεν προσθέτουν νέες λειτουργίες). Τα «ρεύματα επεξεργασίας» [processing streams] παρέχουν επιπλέον λειτουργίες σε σχέση με υπάρχοντα ρεύματα.

Η ιεραρχία αναγνωστών/εγγραφέων (ελλιπής) (μόνο ανάγνωση, ελλιπής) Reader BufferedReader StringReader InputStreamReader LineNumberReader FileReader ρεύματα επεξεργασίας ρεύματα απόληξης στοιχείων

InputStream Αφηρημένη [abstract] κλάση Διαβάζει bytes δεδομένων από οποιοδήποτε ρεύμα εισόδου

InputStreamReader Τελική [concrete] κλάση Μετατρέπει bytes από το InputStream σε χαρακτήρες Κάθε λειτουργία ανάγνωσης μπορεί να προκαλέσει μία ή περισσότερες λειτουργίες ανάγνωσης του ρεύματος-υπόστρωμα InputStream

BufferedReader Τελική [concrete] κλάση Συνδέεται με έναν αναγνώστη-υπόστρωμα (συνήθως τύπου InputStreamReader ή FileReader) Προσθέτει «προσωρινή μνήμη» [buffering] για καλύτερες επιδόσεις Αποφεύγει να πραγματοποιεί μια κλήση «ανάγνωσης» για κάθε χαρακτήρα

Ανάγνωση: παράδειγμα BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { while(true) String line = reader.readLine(); System.out.println("the line was: " + line); } catch(IOException exc) // an IO error occurred

Είσοδος/έξοδος αρχείου Week 9: File I/O Είσοδος/έξοδος αρχείου [File I/O] Week 4: Exceptions time: 2 x one hour this lecture is done with live demo run in parallel topics: •

Τεμαχισμός [tokenising] της εισόδου StringTokenizer tokenizer = new StringTokenizer(line); while(tokenizer.hasMoreTokens()) System.out.println(tokenizer.nextToken()); Γραμμή εισόδου: It's a beautiful day! Τεμάχια [tokens]: It's a beautiful day!

Τεμαχισμός της εισόδου(2) Παράδειγμα- ο κώδικας: String s = "this is a test"; StringTokenizer st = new StringTokenizer(s); while (st.hasMoreTokens()) { println(st.nextToken()); } Τυπώνει την παρακάτω έξοδο: this is a test

Η διαπροσωπεία “Tokenizer” Κατασκευαστές: StringTokenizer(String str) Constructs a string tokenizer for the specified string. StringTokenizer(String str, String delim) Constructs a string tokenizer for the specified string and a given delimiter. StringTokenizer(String str, String delim, boolean returnTokens) Constructs a string tokenizer for the specified string, a given delimiter and a flag indicating whether to return the delimiter tokens.

Η διαπροσωπεία “Tokenizer”(2) Μέθοδοι: boolean hasMoreTokens() Tests if there are more tokens available from this tokenizer's string. String nextToken() Returns the next token from this string tokenizer. int countTokens() Calculates the number of times that this tokenizer's nextToken method can be called before it generates an exception.

Η διαπροσωπεία Reader Αφηρημένη κλάση Reader: Reader() Create a new character-stream reader whose critical sections will synchronize on the reader itself. int read() Read a single character abstract void close() Close the stream. Οι χαρακτήρες επιστρέφονται ως int (-1 εάν έχουν εξαντληθεί ) Πρέπει να μετατραπούν σε χαρακτήρες μέσω εντολής τύπου cast

Κλάση FileReader class FileReader (extends InputStreamReader): FileReader(File file) FileReader(FileDescriptor fd) FileReader(String fileName) (Καμία νέα μέθοδος)

Παράδειγμα: copyFile public void copyFile(String fromFile, String toFile) throws IOException { File inputFile = new File(fromFile); File outputFile = new File(toFile); FileReader in = new FileReader(inputFile); FileWriter out = new FileWriter(outputFile); int ch; while ((ch = in.read()) != -1) out.write(ch); in.close(); out.close(); } processing the character as int is okay as long as it goes from stream to stream

Δημιουργία αναγνώστη αρχείου Ο κώδικας με τον οποίο η μέθοδος copyFile δημιουργεί έναν αναγνώστη αρχείου [FileReader]: inputFile = new File(fromFile); FileReader in = new FileReader(inputFile);

Η δομή του αναγνώστη αρχείων Διαβάζει χαρακτήρες από ένα αρχείο File FileReader Αρχείο Κειμένου [text file] Δημιουργεί, ανοίγει ένα αρχείο, ελέγχει εάν ένα αρχείο υπάρχει, κλπ. Σύστημα αρχείων file system (δίσκος) read (επιστρέφει ένα χαρακτήρα ή -1 εάν βρισκόμαστε στο τέλος του αρχείου)

Μετατροπή [casting] σε χαρακτήρες public void processFile(String fileName) throws IOException { File inputFile = new File(fileName); FileReader in = new FileReader(inputFile); int ch; while ((ch = in.read()) != -1) processCharacter((char)ch); in.close(); } public void processCharacter(char aChar) ... Αναγκαία μετατροπή! cast to character has to be used to get character

Ανάγνωση αριθμών Αρχείο κειμένου ... int number1; int number2; boolean invalidInput = false; String line = reader.readLine(); try { number1 = Integer.parseInt(line); line = reader.readLine(); number2 = Integer.parseInt(line); } catch(NumberFormatException exc) // input was not a valid number invalidInput = true; 42 128 Αρχείο κειμένου