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

Σχετικά έγγραφα
Week 9: Input / Output

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Wrapper Classes, Abstract Classes and Interfaces

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στην Γλώσσα Προγραμματισμού Python. 12/10/16 1

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

Βασικά της γλώσσας JAVA

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

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

Streams Input / Output in C++ George Kastrinis

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

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

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

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

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

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

14. Δικτύωση με Java Δικτύωση με Java Sockets Δημιουργία της σύνδεσης Διευθυνσιοδότηση της σύνδεσης

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός

2.1. Εντολές Σχόλια Τύποι Δεδομένων

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

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

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

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

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

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

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

Transcript:

Week 9: Input / Output Μηχανισμοί εισόδου/εξόδου [I/O mechanisms] Όλα τα προγράμματα χρειάζονται είσοδο/έξοδο για να επικοινωνούν με το περιβάλλον τους. Διάλεξη #16: Είσοδος / Έξοδος [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 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(); Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, 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