Week 9: Input / Output

Σχετικά έγγραφα
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #16

Αρχεία και Ρεύματα. Αρχεία

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 12: Ροές και είσοδος/έξοδος αρχείων

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ

Διαδικτυακές Εφαρμογές Ενότητα 4: Streams

Προγραµµατισµός ΙΙ Java 2

Αντικειμενοστρεφής Προγραμματισμός

10.1 Γενικά για τα streams

Wrapper Classes, Abstract Classes and Interfaces

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αρχεία

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Είσοδος Έξοδος (Input Output) Εξαιρέσεις (Exceptions)

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

Εισαγωγή στον Προγραμματισμό

Εργασία Μαθήματος Αξία: 40% του τελικού σας βαθμού Ανάθεση: Παράδοση:

ΕΞΑΙΡΕΣΕΙΣ. Εξαιρέσεις προκαλούνται. από το σύστηµα. από το πρόγραµµα

Είσοδος & Έξοδος. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση:

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

Οντοκεντρικός Προγραμματισμός

(C) 2010 Pearson Education, Inc. All rights reserved.

Προγραμματισμός ΙΙ (Java) 4. Διαχείριση εξαιρέσεων

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

Μάθημα 2 [10/11/2015]

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Mεταβλητές (variables) και Σταθερές (constants)

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

Οντοκεντρικός Προγραμματισμός

Συντακτικά λάθη, λάθη εκτέλεσης, Λογικά λάθη

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07

Χωρική Βάση δεδοµένων Autocad

Εισαγωγή στον αντικειμενοστραφή προγραμματισμό με τη Java

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων

Διδάσκων: Παναγιώτης Ανδρέου

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Προγραμματισμός Διαδικτύου

Αντικειμενοστρεφής Προγραμματισμός

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Εισαγωγή βιβλιοθηκών import java.applet.applet; import java.awt.graphics; ή import java.*.*

Αντικειμενοστραφής Προγραμματισμός

Διάλεξη 18η: Διαχείρηση Αρχείων

2 ΓΡΑΜΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 11 : ΑΡΧΕΙΑ ΚΑΙ ΧΕΙΡΙΣΜΟΣ ΣΦΑΛΜΑΤΩΝ

Week 7: Java Collection Classes

άσκηση Hide UI Elements 7.2 Try and Catch

Οντοκεντρικός Προγραμματισμός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις Αρχεία String processing

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής - Εβδομάδα 1

Αρχεία & Ρεύματα ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ. Γεώργιος Παπαϊωάννου ( ) gepap@aueb.gr

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

Εισαγωγή στον Προγραµµατισµό - Εβδοµάδα 7

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Δομημένος Προγραμματισμός

Αντικειµενοστρεφής Προγραµµατισµός

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειµενοστραφής Προγραµµατισµός

Εργαστήριο 9: Αρχεία

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις

4 Συλλογές Αντικειμένων

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS. Διαχείριση Δικτύων. Nikolas Bompetsis

Βιβλιοθήκη stdio. Προγραμματισμός II 1

ιαδικτυακές Εφαρµογές

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Εισαγωγή στον Προγραμματισμό

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

S, (5, -3, 34, -23, 7) ( *, _

ΕΠΕΞΕΡΓΑΣΙΑ ΑΡΧΕΙΩΝ Λέµε αρχείο

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

Στοιχεία εξεταζόµενου Αριθµός Απάντησης Βαθµολογία. Σύνολο (Θέµα 4 ο )

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

ΕΠΛ131 Αρχές Προγραμματισμού

Week. 6: Java Collections

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Constructors, Destructors, Pointers IO Streams, File Streams

Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Αντικειμενοστρεφής Προγραμματισμός

Hancock. Ζωγραφάκης Ιωάννης Εξαρχάκος Νικόλαος. ΕΠΛ 428 Προγραμματισμός Συστημάτων

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη

Transcript:

Week 9: Input / Output Μηχανισµοί εισόδου/εξόδου [I/O mechanisms] Όλα τα προγράµµατα χρειάζονται είσοδο/έξοδο για να επικοινωνούν µε το περιβάλλον τους. Εβδοµάδα 8: Είσοδος / Έξοδος [Input / Output] Η είσοδος/έξοδος γίνεται µέσω κειµένου, γραφικών, αισθητήρων, εξωτερικών συσκευών, κλπ. Για προσωπικούς υπολογιστές: οθόνη, πληκτρολόγιο, ποντίκι, δίκτυο, σύστηµα αρχείων. Για εµφυτευµένα [embedded] υπολογιστικά συστήµατα: αισθητήρες, άλλοι µηχανισµοί. Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 1 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 2 Μηχανισµοί εξόδου Αποτελέσµατα µεθόδων (BlueJ) Κείµενο σε οθόνη, εκτυπωτή, κλπ. Στοιχεία [data] σε αρχείο Στοιχεία προς άλλα προγράµµατα, δίκτυο, κλπ. Παράθυρα, γραφικά (GUI) Μηχανισµοί εισόδου Παράµετροι µεθόδων (BlueJ) Παράµετροι γραµµής εντολών [command line] Κείµενο από πληκτρολόγιο Στοιχεία [data] από αρχεία Στοιχεία από προγράµµατα, το δίκτυο, κλπ. Είσοδος από ΓΠΕ [GUI] (δράσεις ποντικιού πίεση πλήκτρων, επιλογή µενού, κλπ.) Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 3 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 4 Μηχανισµοί εισόδου/εξόδου [I/O] της Java Ρεύµατα [Streams] Στην Java η είσοδος/έξοδος γίνεται µέσω ενός συνόλου κλάσεων Για I/O: καµία νέα δοµή της γλώσσας (µόνο νέες κλάσεις) Πρόγραµµα διαβάζει [reads] Ρεύµα [stream] Πηγή [source] Οι κλάσει παρέχουν αρκετές διαπροσωπίες προς ρεύµατα [streams] και άλλες «επινοήσεις» εισόδου/εξόδου [IO concepts]. Πρόγραµµα γράφει [writes] Προορισµός [destination] Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 5 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 6

Ιδιωµατισµοί Java [ java idioms] Χαρακτήρες και Bytes Εγγραφή Άνοιξε το ρεύµα [stream] while(περισσότερα στοιχεία) γράψε στοιχεία στο ρεύµα Κλείσε το ρεύµα Ρεύµα χαρακτήρων Ρεύµα byte Ανάγνωση Άνοιξε το ρεύµα [stream] while(περισσότερα στοιχεία) διάβασε στοιχεία από το ρεύµα Κλείσε το ρεύµα Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 7...Reader,...Writer Εγγραφή και ανάγνωση κειµένου...stream Εγγραφή και ανάγνωση δυαδικών στοιχείων [binary data] (αριθµοί, εικόνες, ήχος, Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 8 Ρεύµατα και αναγνώστες/εγγραφείς Ρεύµατα [streams] ιαβάζουν/γράφουν bytes Μπορεί να χρησιµοποιηθούν για οποιοδήποτε τύπο δεδοµένων Χρησιµοποιούνται για αποθήκευση στοιχείων σε σειριακή µορφή ["serialisation"] Αναγνώστης/εγγραφέας [reader/writer] ιαβάζει/γράφει χαρακτήρες Χρησιµοποιούνται για είσοδο/έξοδο κειµένου Εισήχθησαν στην βιβλιοθήκη πρόσφατα Προτιµούνται για είσοδο/έξοδο κειµένου Η ιεραρχία Stream (ελλιπής) FilterOutputStream PrintStream OutputStream FileOutputStream BufferedOutputStream (µόνο έξοδος, ελλιπής) PipedOutputStream Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 9 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 10 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» κλάσεων. Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 11 Μεθοδοι της 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) Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 12

Ανάγνωση Παράδειγµα Απόληξη στοιχείων και επεξεργασία [Data Sink vs Processing] Ρεύµατα απόληξης στοιχείων BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try String inputline = reader.readline(); catch(ioexception exc) // an IO error occurred Τι σηµαίνουν όλα αυτά; Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 13 Ρεύµατα επεξεργασίας Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 14 Data Sink vs Processing (2) Η ιεραρχία αναγνωστών/εγγραφέων (ελλιπής) Τα «ρεύµατα απόληξης στοιχείων» [data sink streams] είναι υλοποιήσεις της διαπροσωπείας stream οι οποίες παρέχουν πρόσβαση σε διάφορες πηγές και προορισµούς στοιχείων (αλλά δεν προσθέτουν νέες λειτουργίες). BufferedReader Reader StringReader (µόνο ανάγνωση, ελλιπής) InputStreamReader Τα «ρεύµατα επεξεργασίας» [processing streams] παρέχουν επιπλέον λειτουργίες σε σχέση µε υπάρχοντα ρεύµατα. LineNumberReader FileReader ρεύµατα απόληξης στοιχείων ρεύµατα επεξεργασίας Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 15 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 16 InputStream Αφηρηµένη [abstract] κλάση ιαβάζει bytes δεδοµένων από οποιοδήποτε ρεύµα εισόδου InputStreamReader Τελική [concrete] κλάση Συνδέεται µε έναν ρεύµα-υπόστρωµα τύπου InputStream Μετατρέπει bytes από το InputStream σε χαρακτήρες Κάθε λειτουργία ανάγνωσης µπορεί να προκαλέσει µία ή περισσότερες λειτουργίες ανάγνωσης του ρεύµατος-υπόστρωµα InputStream Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 17 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 18

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 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 19 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 20 Week 9: File I/O Τεµαχισµός [tokenising] της εισόδου StringTokenizer tokenizer = new StringTokenizer(line); Είσοδος/έξοδος αρχείου [File I/O] while(tokenizer.hasmoretokens()) System.out.println(tokenizer.nextToken()); Γραµµή εισόδου: It's a beautiful day! Τεµάχια [tokens]: It's a beautiful day! Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 21 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 22 Τεµαχισµός της εισόδου(2) Παράδειγµα- ο κώδικας: String s = "this is a test"; StringTokenizer st = new StringTokenizer(s); while (st.hasmoretokens()) println(st.nexttoken()); Τυπώνει την παρακάτω έξοδο: this is a test Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 23 Η διαπροσωπεία 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. Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 24

Η διαπροσωπεία 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 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 25 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 26 ιαπροσωπεία FileReader class FileReader (extends Reader): 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(c); in.close(); out.close(); Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 27 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 28 ηµιουργία αναγνώστη αρχείου Η δοµή του αναγνώστη αρχείων Ο κώδικας µε τον οποίο η µέθοδος copyfile δηµιουργεί έναν αναγνώστη αρχείου [FileReader]: ιαβάζει χαρακτήρες από ένα αρχείο inputfile = new File(fromFile); FileReader in = new FileReader(inputFile); FileReader File Αρχείο Κειµένου [text file] Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 29 ηµιουργεί, ανοίγει ένα αρχείο, ελέγχει εάν ένα αρχείο υπάρχει, κλπ. read (επιστρέφει ένα χαρακτήρα ή -1 εάν βρισκόµαστε στο τέλος του αρχείου) Σύστηµα αρχείων file system (δίσκος) Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 30

Μετατροπή [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)... Αναγκαία µετατροπή! Ανάγνωση αριθµών... 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 Αρχείο κειµένου Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 31 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 32