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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
Advertisements

ΕΙΣΑΓΩΓΗ ΣΤΗ JAVA. Reference • Thinking in Java, Bruce Eckel,
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Λίστες παράλειψης (skip lists) TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 9: Διανύσματα και λίστες.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Φροντηστήριο Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Eργαλεία.
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
Τεχνολογία Λογισμικού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 και SQL Δαμιανός Χατζηαντωνίου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή Ειδικά Θέματα Μεταγγλωτιστών Χειμερινό Εξάμηνο / Κατασκευή compiler για την γλώσσα Minijava.
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές Εξαιρέσεις.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
1 Εισαγωγή στα Streams Υπάρχουν πάνω από 60 κλάσεις για input/output στο πακέτο Υπάρχουν πάνω από 60 κλάσεις για input/output στο πακέτο java.io.*; java.io.*;
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Διασύνδεση Java Εφαρμογών με ΒΔ Π. Φιτσιλής 1.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γενικευμένες κλάσεις Συλλογές.
Γράφημα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Συνδυαστικό αντικείμενο που αποτελείται από.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Streams and Files.
Πανεπιστήμιο Κύπρου – Τμήμα Πληροφορικής ΕΠΛ446-Προχωρημένες Βάσεις Δεδομένων Ζωγραφάκης Ιωάννης.
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
Streams Streams: κανάλια ροής δεδομένων Κανάλια εισόδου: ανάγνωση δεδομένων Κανάλια εξόδου: αποστολή δεδομένων Συνήθεις πηγές και προορισμοί δεδομένων:
Streams, Sockets & I/O Θ. Βαρβαρίγου Καθηγ. ΕΜΠ Τηλ
Κεφάλαιο 4 Εξαιρέσεις. Όταν σε ένα πρόγραμμα συμβεί κάποιο λάθος, ο κώδικας εγείρει (throw) μία εξαίρεση. Στη Java oι εξαιρέσεις εκπροσωπούνται από αντικείμενα.
Κεφάλαιο 3 Τύποι Δεδομένων - Τελεστές. Πρωτογενείς τύποι δεδομένων: int, float, double, chars ΤύποςΌνομαΜέγεθος byte 8-bit signed, short 16-bit.
Αντικειμενοστραφής Προγραμματισμός (Θ) Ενότητα 5: Είσοδος/ Έξοδος Κλειώ Σγουροπούλου Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Ανοικτά Ακαδημαϊκά Μαθήματα στο.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγ/μό Η/Υ
Εισαγωγή στον Προγ/μό Υπολογιστών
Αντικειμενοστραφής Προγραμματισμός ΙΙ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Βασικές έννοιες Αντικειμενοστραφούς Προγραμματισμού ΙΙ
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Βασικές έννοιες Αντικειμενοστραφούς Προγραμματισμού ΙΙ
Εφαρμογές Υπολογιστών
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγ/μό Η/Υ
ΔΟΜΕΣ ΕΛΕΓΧΟΥ(if-else, switch) και Λογικοί τελεστές / παραστάσεις
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Ειδικά Θέματα στον προγραμματισμό Υπολογιστών
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Αναδρομικές Εξισώσεις και Αφηρημένοι Τύποι Δεδομένων
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ
Εισαγωγή στη Java (Μέρος Α’)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Διάλεξη #10: Εκτέλεση Java χωρίς το BlueJ
Υπο-τύποι και πολυμορφισμός
Week 9: Input / Output Διάλεξη #16: Είσοδος / Έξοδος [Input / Output]
Εξαιρέσεις [Exceptions]
Ομαδοποίηση αντικειμένων
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Μεταγράφημα παρουσίασης:

Εισαγωγή στον Προγ/μό Υπολογιστών Αρχεία Δεδομένων Διδάσκων: Μιχάλης Τίτσιας

Χρησιμοποιώντας Αρχεία Δεδομένων Οι εφαρμογές που εμπλέκουν αναζήτηση και ταξινόμηση εργάζονται με συλλογές δεδομένων που είναι πολύ μεγάλες για να δημιουργηθούν με το χέρι. Για το λόγο αυτό θα θέλαμε να διαβάζουμε αυτόματα τα δεδομένα από αρχεία. Αρχείο είναι το γενικό όνομα για οποιαδήποτε συλλογή δεδομένων που εμπεριέχει διάφορους τύπους μόνιμων μέσων αποθήκευσης που είναι συνδεδεμένα σε έναν υπολογιστή. Στις περισσότερες περιπτώσεις, ένα αρχείο αποθηκεύεται σε έναν σκληρό δίσκο, αλλά μπορεί όμως να αποθηκευτεί και σε ένα αφαιρούμενο μεσό, όπως ένα CD. Τα αρχεία μπορεί να περιέχουν διαφόρων τύπων πληροφορίες. Όταν για παράδειγμα, μεταγλωττίζουμε ένα πρόγραμμα Java, ο μεταγλωττιστής αποθηκεύει την έξοδο του σε ένα σύνολο αρχείων τάξης (class files), καθένα από τα οποία περιέχει δυαδικά δεδομένα που σχετίζονται με μια τάξη. Ο πιο συχνός τύπος αρχείων, όμως, είναι το αρχείο κειμένου (text file), που περιέχουν χαρακτήρες κειμένου.

Αρχεία κειμένων vs. Συμβολοσειρών Αν και τα αρχεία κειμένου και οι συμβολοσειρές περιέχουν και τα δύο χαρακτήρες, είναι σημαντικό να λάβουμε υπόψη μας τις ακόλουθες σημαντικές διαφορές ανάμεσα τους: Η πληροφορία που αποθηκεύεται σ’ένα αρχείο είναι μόνιμη. Η τιμή μιας μεταβλητής συμβολοσειράς υπάρχει όσο υπάρχει η μεταβλητή. Οι τοπικές μεταβλητές εξαφανίζονται όταν μια μέθοδος τελειώνει και οι μεταβλητές αντικειμένων εξαφανίζονται όταν εξαφανιστεί το αντικείμενο, πράγμα που συμβαίνει συνήθως όταν τελειώνει το πρόγραμμα. Η πληροφορία ενός αρχείου υπάρχει μέχρι την διαγραφή του. 1. Τα αρχεία συνήθως διαβάζονται σειριακά. Όταν διαβάζετε δεδομένα από αρχεία, συνήθως ξεκινάτε από την αρχή και διαβάζεται τους χαρακτήρες με την σειρά, είτε ξεχωριστά είτε σε ομάδες που συνήθως είναι ανεξάρτητες γραμμές. Αφού έχετε διαβάσει ένα σύνολο χαρακτήρων, στην συνέχεια μετακινήστε στο επόμενο σύνολο χαρακτήρων μέχρι να φτάσετε στο τέλος του αρχείου. 2.

Διαβάζοντας Αρχεία Κειμένου Για να διαβάσουμε δεδομένα από ένα αρχείο κειμένου σ’ένα πρόγραμμα Java, πρέπει να ακολουθήσουμε τα εξής βήματα: Δημιουργία ενός νέου αντικειμένου τάξης BufferedReader συνδεδεμένο με τα δεδομένα του αρχείου. Η φάση αυτή ονομάζεται άνοιγμα του αρχείου. 1. Κλήση των μεθόδων που παρέχει η τάξη BufferedReader για να διαβάσουμε δεδομένα σειριακά. 2. Κλείσιμο της συσχέτισης ανάμεσα στον reader και το αρχείο καλώντας την μέθοδο close, ώστε να κλείσει το αρχείο. 3. Η τάξη BufferedReader της Java δίνει την δυνατότητα να διαβάσουμε δεδομένα από αρχεία με διάφορους τρόπους. Μπορούμε να διαβάσουμε μεμονωμένους χαρακτήρες με την μέθοδο read. Μπορούμε να διαβάσουμε γραμμές με την μέθοδο readLine. Μπορούμε να διαβάσουμε λεκτικές μονάδες μέσω της τάξης Scanner. Κάθε στρατηγική περιγράφεται παρακάτω.

Τυπικές Υποκλάσεις της Reader Το πακέτο java.io ορίζει αρκετές υποκλάσεις της γενικής κλάσης Reader. Για να διαβάσουμε αρχεία κειμένων, πρέπει να χρησιμοποιήσουμε τις παρακάτω υποκλάσεις: Την κλάση FileReader, που επιτρέπει την δημιουργία απλών reader (αρκεί μόνο να της παρέχουμε το όνομα του αρχείου). Η τάξη BufferedReader, που κάνει όλες τις λειτουργίες πιο αποδοτικές και επιτρέπει το διάβασμα μεμονωμένων γραμμών. Το τυπικό ιδίωμα για το άνοιγμα ενός αρχείου κειμένου είναι η κλήση των κατασκευαστών για κάθε μία από αυτές τις κλάσεις σε μία μόνο πρόταση: BufferedReader rd = new BufferedReader( new FileReader( filename)); Ο κατασκευαστής της FileReader παίρνει το όνομα του αρχείου και δημιουργεί έναν απλό reader. Ο reader αυτός στην συνέχεια δίνεται ως όρισμα στον κατασκευαστή της BufferedReader.

Ανάγνωση Χαρακτήρων από Αρχείο Αφού δημιουργήσετε το αντικείμενο της BufferedReader όπως φαίνεται στην προηγούμενη διαφάνεια, μπορείτε να διαβάσετε μεμονωμένους χαρακτήρες από το αρχείο καλώντας την μέθοδο read. Η μέθοδος read επιστρέφει τον επόμενο χαρακτήρα ενός αρχείου, όμως τον επιστρέφει ως ακέραιο (int). Αν υπάρχουν εναπομείναντες χαρακτήρες στο αρχείο, η κλήση της read επιστρέφει την τιμή σε Unicode του επόμενου. Αν δεν υπάρχουν άλλοι χαρακτήρες, τότε η read επιστρέφει -1. Το κομμάτι κώδικα που ακολουθεί, για παράδειγμα, μετρά τον αριθμό των γραμμάτων ενός BufferedReader με όνομα rd: int nLetters = 0; while (true) { int ch = rd.read(); if (ch == -1) break; if (Character.isLetter(ch)) nLetters++; }

Ανάγνωση Γραμμών από Αρχείο Μπορείτε επίσης να διαβάσετε ολόκληρες γραμμές από ένα αρχείο καλώντας την μέθοδο readLine, που επιστρέφει την επόμενη γραμμή δεδομένων από το αρχείο σαν συμβολοσειρά (string) αφού αφαιρέσει οποιονδήποτε χαρακτήρα αλλαγής γραμμής. Αν δεν υπάρχουν άλλες γραμμές, η readLine επιστρέφει null. Το παρακάτω κομμάτι κώδικα χρησιμοποιεί την μέθοδο readLine για να βρει το μήκος της μεγαλύτερης γραμμής του reader rd: int maxLength = 0; while (true) { String line = rd.readLine(); if (line == null) break; maxLength = Math.max(maxLength, line.length()); } Η χρήση της μεθόδου readLine κάνει τα προγράμματα φορητά επειδή εξαλείφει την ανάγκη να σκεφτούμε τι χαρακτήρας αλλαγής γραμμής χρησιμοποιείται από το λειτουργικό σύστημα (Unix: \n, Windows: \r\n).

Χειρισμός Εξαιρέσεων Δυστυχώς,η διαδικασία ανάγνωσης δεδομένων από αρχείο δεν είναι τόσο απλή όσο δείχνουν οι παραπάνω διαφάνειες. Ότα εργάζεστε με τάξεις του πακέτου java.io, πρέπει πάντα να αναφέρεται τι συμβαίνει αν μια λειτουργία αποτύχει. Στην περίπτωση ανοίγματος αρχείου, για παράδειγμα, πρέπει να ορίσετε τι θα κάνει το πρόγραμμα αν το αρχείο που προσπαθείτε να ανοίξετε δεν υπάρχει. Οι τάξεις της βιβλιοθήκης της Java συχνά σε τέτοιες περιπτώσεις απαντούν πετώντας μια εξαίρεση, που είναι μια από τις στρατηγικές που οι μέθοδοι της Java μπορούν να χρησιμοποιήσουν για να αναφέρουν μια απροσδόκητη κατάσταση. Αν ο κατασκευαστής της FileReader, για παράδειγμα, δεν βρίσκει το αρχείο, τότε πετά μια IOException ώστε να μας ενημερώσει για το γεγονός. Όταν η Java πετά μια εξαίρεση, τότε σταματά ό,τι κάνει και κοιτά το ιστορικό εκτέλεσης της για να δει αν κάποια μέθοδος έχει δηλώσει πως πιάνει “catching” αυτή την εξαίρεση μέσω μιας πρόταση try όπως φαίνεται στην επόμενη διαφάνεια.

Η Δήλωση (Statement) try Η Java χρησιμοποιεί την πρόταση try για να δηλώσει ενδιαφέρον για το πιάσιμο μια εξαίρεσης. Στην απλούστερη μορφή της η σύνταξη της πρότασης try είναι try { code in which an exception might occur } catch (type identifier) { code to respond to the exception } Όπου type είναι το όνομα κάποιας τάξης εξαίρεσης και identifier είναι το όνομα της μεταβλητής που αποθηκεύει την εξαίρεση. Το εύρος των προτάσεων στις οποίες μπορεί να πιαστεί η εξαίρεση περιέχει όχι μόνο τις προτάσεις που βρίσκονται ρητά μέσα στο σώμα της try αλλά και οποιαδήποτε μέθοδο ή πρόταση (statement) κληθεί από εκεί. Αν η εξαίρεση συμβεί μέσα σε κάποια άλλη μέθοδο, τυχόν μεταγενέστερα πλαίσια της στοίβας (stack) αφαιρούνται μέχρι ο έλεγχος του προγράμματος να επιστρέψει στην ίδια την πρόταση try.

Η Δήλωση (Statement) try Ο σχεδιασμός του πακέτου java.io μας αναγκάζει να χρησιμοποιήσουμε προτάσεις try για να πιάσουμε εξαιρέσεις που μπορεί να συμβούν. Για παράδειγμα, αν ανοίξετε ένα αρχείο χωρίς έλεγχο εξαιρέσεων, ο compiler της Java θα αναφέρει ότι υπάρχει σφάλμα στο πρόγραμμα. Το πρόγραμμα ReverseFile στις επόμενες διαφάνειες δείχνει την χρήση της πρότασης try σε δύο διαφορετικές συνθήκες: Μέσα στην μέθοδο openFileReader, το πρόγραμμα χρησιμοποιεί μια πρόταση try για να ελέγξει αν υπάρχει το αρχείο. Αν δεν υπάρχει, η πρόταση catch τυπώνει ένα μήνυμα που εξηγεί στον χρήστη την αποτυχία και έπειτα ζητά από αυτόν ένα νέο όνομα αρχείου. Μέσα στην μέθοδο readLineArray, ο κώδικας χρησιμοποιεί μια πρόταση try για να δει εάν ένα σφάλμα I/O έχει συμβεί.

Το πρόγραμμα ReverseFile import acm.program.*; import acm.util.*; import java.io.*; import java.util.*; /** This program prints the lines from a file in reverse order */ public class ReverseFile extends ConsoleProgram { public void run() { println("This program reverses the lines in a file."); BufferedReader rd = openFileReader("Enter input file: "); String[] lines = readLineArray(rd); for (int i = lines.length - 1; i >= 0; i--) { println(lines[i]); } /* * Implementation note: The readLineArray method on the next slide * uses an ArrayList internally because doing so makes it possible * for the list of lines to grow dynamically. The code converts * the ArrayList to an array before returning it to the client. */ page 1 of 3 skip code

Το πρόγραμμα ReverseFile /* * Requests the name of an input file from the user and then opens * that file to obtain a BufferedReader. If the file does not * exist, the user is given a chance to reenter the file name. */ private BufferedReader openFileReader(String prompt) { BufferedReader rd = null; while (rd == null) { try { String name = readLine(prompt); rd = new BufferedReader(new FileReader(name)); } catch (IOException ex) { println("Can't open that file."); } return rd; /* * Reads all available lines from the specified reader and returns * an array containing those lines. This method closes the reader * at the end of the file. */ private String[] readLineArray(BufferedReader rd) { ArrayList<String> lineList = new ArrayList<String>(); try { while (true) { String line = rd.readLine(); if (line == null) break; lineList.add(line); } rd.close(); } catch (IOException ex) { throw new ErrorException(ex); String[] result = new String[lineList.size()]; for (int i = 0; i < result.length; i++) { result[i] = lineList.get(i); return result; page 3 of 3

Το πρόγραμμα ReverseFile /* * Reads all available lines from the specified reader and returns * an array containing those lines. This method closes the reader * at the end of the file. */ private String[] readLineArray(BufferedReader rd) { ArrayList<String> lineList = new ArrayList<String>(); try { while (true) { String line = rd.readLine(); if (line == null) break; lineList.add(line); } rd.close(); } catch (IOException ex) { throw new ErrorException(ex); String[] result = new String[lineList.size()]; for (int i = 0; i < result.length; i++) { result[i] = lineList.get(i); return result; import acm.program.*; import acm.util.*; import java.io.*; import java.util.*; /** This program prints the lines from a file in reverse order */ public class ReverseFile extends ConsoleProgram { public void run() { println("This program reverses the lines in a file."); BufferedReader rd = openFileReader("Enter input file: "); String[] lines = readLineArray(rd); for (int i = lines.length - 1; i >= 0; i--) { println(lines[i]); } /* * Implementation note: The readLineArray method on the next slide * uses an ArrayList internally because doing so makes it possible * for the list of lines to grow dynamically. The code converts * the ArrayList to an array before returning it to the client. */ page 2 of 3 skip code

Χρησιμοποιώντας της Τάξη Scanner Είναι επίσης δυνατόν να χωρίσουμε ένα αρχείο σε λεκτικές μονάδες μέσω της τάξης Scanner του πακέτου java.util (ένα μεγάλο πλεονέκτημα της Scanner είναι ότι χειρίζεται τις εξαιρέσεις εσωτερικά, οπότε δεν είναι αναγκαίο να γράφουμε συνέχεια try/catch). Οι πιο χρήσιμες μέθοδοι της τάξης Scanner φαίνονται στον παρακάτω πίνακα : new Scanner(reader) Δημιουργεί νέο αντικείμενο της Scanner από τον reader. next() Επιστρέφει την επόμενη λεκτική μονάδα ως string. nextInt() Επιστρέφει τον επόμενο ακέραιο (int). nextDouble() Επίστρεφει τον επόμενο αριθμό double. nextBoolean() Επιστρέφει την επόμενη Boolean τιμή (true ή false). hasNext() Επιστρέφει true αν δεν υπάρχουν άλλες λεκτικές μονάδες. hasNextInt() Επιστρέφει true αν η επόμενη λεκτική μονάδα είναι int. hasNextDouble() Επιστρέφει true αν η επόμενη λεκτική μονάδα είναι αριθμός hasNextBoolean() Επιστρέφει true αν η επόμενη λεκτική μονάδα είναι boolean close() Κλείνει το scanner και τον reader που χρησιμοποιεί.

Εγγραφή Αρχείων Το πακέτο java.io δίνει την δυνατότητα δημιουργίας νέων αρχείων χρησιμοποιώντας της κατάλληλες υποκλάσεις της γενικής κλάσης Writer. Όταν γράφετε δεδομένα σε ένα αρχείο, η πιο κλασική προσέγγιση είναι να δημιουργήσετε έναν PrintWriter ως εξής: PrintWriter wr = new PrintWriter( new FileWriter( filename)); Όπως στο παράδειγμα του reader, ο φωλιασμένος αυτός κατασκευαστής δημιουργεί έναν FileWriter για το όνομα αρχείου που του δόθηκε στην συνέχεια περνά το αποτέλεσμα στον κατασκευαστή του PrintWriter. Αφού αποκτήσετε ένα αντικείμενο PrintWriter, μπορείτε να γράψετε δεδομένα μέσω του writer χρησιμοποιώντας τις μεθόδους println και print που χρησιμοποιείται και στα προγράμματα κονσόλας.

Διάβασμα για το σπίτι Ενότητα 12.4 από «Η Τέχνη και Επιστήμη της JAVA: Μια εισαγωγή στην Επιστήμη των Υπολογιστών», E. Roberts