1 Εισαγωγή στα Streams Υπάρχουν πάνω από 60 κλάσεις για input/output στο πακέτο Υπάρχουν πάνω από 60 κλάσεις για input/output στο πακέτο java.io.*; java.io.*;

Slides:



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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Copy Constructor Deep and Shallow Copies.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
POINTERS, AGGREGATION, COMPOSITION. POINTERS TO OBJECTS.
ΕΙΣΑΓΩΓΗ ΣΤΗ JAVA. Reference • Thinking in Java, Bruce Eckel,
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΙΑΔΙΚΑΣΤΙΚΟ ΠΡΟΓΡΑΜMΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ – ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 3: Υλοποίηση μεθόδων.
Τύποι πραγματικών αριθμών
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Φροντηστήριο Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Eργαλεία.
Περίληψη Αρχιτεκτονική Μικροεπεξεργαστών MIPS-32
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 9: Input / Output Εβδομάδα 8: Είσοδος / Έξοδος [Input / Output]
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
Uniform Resource Locators (URLs) Ορισμός : URL (Uniform Resource Locator): Δείκτης σε μία πηγή πληροφοριών του Παγκοσμίου Ιστού (World Wide Web) Στη Java,
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 7: Συμβολοσειρές.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου.
Ολυμπιάδα Πληροφορικής
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 11: Εκτέλεση Java χωρίς το BlueJ.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αρχεία.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γενικευμένες κλάσεις Συλλογές.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Copy Constructor Deep and Shallow Copies.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Streams and Files.
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Κεφάλαιο 11.1 Uniform Resource Locators (URLs). Ορισμός : URL (Uniform Resource Locator): Δείκτης σε μία πηγή πληροφοριών του Παγκοσμίου Ιστού (World.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
Streams Streams: κανάλια ροής δεδομένων Κανάλια εισόδου: ανάγνωση δεδομένων Κανάλια εξόδου: αποστολή δεδομένων Συνήθεις πηγές και προορισμοί δεδομένων:
Streams, Sockets & I/O Θ. Βαρβαρίγου Καθηγ. ΕΜΠ Τηλ
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ -150 Προγραμματισμός Αρχεία.
ΗΥ150 – ΠρογραμματισμόςΞ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Αρχεία.
Βασικά στοιχεία της Java
Κεφάλαιο 3 Τύποι Δεδομένων - Τελεστές. Πρωτογενείς τύποι δεδομένων: int, float, double, chars ΤύποςΌνομαΜέγεθος byte 8-bit signed, short 16-bit.
Εισαγωγή στη JAVΑ (μέρος Β’) Βασίλης Παπαταξιάρχης Μάθημα: Αντικειμενοστραφής Προγραμματισμός Διδάσκουσα: Ιζαμπώ Καράλη Τμήμα Πληροφορικής.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
Σύστημα Αρχείων (1/2) Εισαγωγή στην Πληροφορκή 1 Η κύρια μνήμη είναι η μνήμη που διατηρεί τα προγράμματα που εκτελούνται και τα δεδομένα τους  Όλες οι.
Είσοδος – Έξοδος – Μορφοποιήσεις - Εξαιρέσεις στη Java Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών 1 Βελώνης Γεώργιος – Καθηγητής Πληροφορικής ΠΕ 20.
Πίνακες στην JAVA ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ.
Πίνακες στην JAVA ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014: Κώστας Στάμος)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Προγραμματισμός Διαδικτύου
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών
Εισαγωγή στον Προγ/μό Η/Υ
Δεδομένα, μεταβλητές, υπολογισμοί
Εισαγωγή στον Προγ/μό Υπολογιστών
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εφαρμογή 1: Μια πρώτη, μινιμαλιστική ιστοσελίδα
Πρωτογενείς τύποι δεδομένων
Κεφάλαιο 10 Streams.
Ειδικά Θέματα στον προγραμματισμό Υπολογιστών
Εισαγωγή στη Java (Μέρος Α’)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Τύποι δεδομένων και τελεστές,
Week 9: Input / Output Διάλεξη #16: Είσοδος / Έξοδος [Input / Output]
Μεταγράφημα παρουσίασης:

1 Εισαγωγή στα Streams Υπάρχουν πάνω από 60 κλάσεις για input/output στο πακέτο Υπάρχουν πάνω από 60 κλάσεις για input/output στο πακέτο java.io.*; java.io.*; Ενα αντικείμενο από το οποίο μπορεί να διαβαστεί μια ακολουθία Ενα αντικείμενο από το οποίο μπορεί να διαβαστεί μια ακολουθία bytes λέγεται input stream και ένα αντικείμενο στο οποίο μπορεί bytes λέγεται input stream και ένα αντικείμενο στο οποίο μπορεί να γραφτεί μια ακολουθία bytes λέγεται output stream. να γραφτεί μια ακολουθία bytes λέγεται output stream. Στη java υπάρχουν κλάσεις InputStream και OutputStream για Στη java υπάρχουν κλάσεις InputStream και OutputStream για διάβασμα ή γράψιμο μη χαρακτηρικών δεδομένων (bytes) και διάβασμα ή γράψιμο μη χαρακτηρικών δεδομένων (bytes) και Reader και Writer κλάσεις για διάβασμα ή γράψιμο χαρακτήρων Reader και Writer κλάσεις για διάβασμα ή γράψιμο χαρακτήρων (για Unicode χαρακτήρες). (για Unicode χαρακτήρες). Οι παραπάνω κλάσεις διαθέτουν abstract μεθόδους για Οι παραπάνω κλάσεις διαθέτουν abstract μεθόδους για διάβασμα/ γράψιμο read και write. διάβασμα/ γράψιμο read και write. abstract int read(), abstract void write(int b) abstract int read(), abstract void write(int b)

2 Streams Εισόδου – Εξόδου ( I ) Οι κλάσεις αυτές όμως δε διαθέτουν όμως μεθόδους για διάβασμα/γράψιμο αριθμών ή strings. Ετσι χρησιμοποιούνται οι κλάσεις DataInputStream, DataOutputSteeam οι οποίες χειρίζονται βασικούς τύπους Οι κλάσεις αυτές όμως δε διαθέτουν όμως μεθόδους για διάβασμα/γράψιμο αριθμών ή strings. Ετσι χρησιμοποιούνται οι κλάσεις DataInputStream, DataOutputSteeam οι οποίες χειρίζονται βασικούς τύπους π.χ. int, double, float. π.χ. int, double, float. void writeBoolean(boolean v), boolean readBoolean(), void writeBoolean(boolean v), boolean readBoolean(), void writeChar(char ch), char readChar(), void writeChar(char ch), char readChar(), void writeDouble(double d), double readDouble(), void writeDouble(double d), double readDouble(), void wrietInt(int I), int readInt() etc void wrietInt(int I), int readInt() etc Υπάρχουν διάφορες άλλες κλάσεις οι οποίες προσφέρουν σε Υπάρχουν διάφορες άλλες κλάσεις οι οποίες προσφέρουν σε συνδυασμό με τις προηγούμενες επί πλέον λειτουργικότητα. συνδυασμό με τις προηγούμενες επί πλέον λειτουργικότητα. Oι κλάσεις BufferedInputStream, BufferedOututStream Oι κλάσεις BufferedInputStream, BufferedOututStream προσφέρουν ενταμιευμένα Streams από bytes. προσφέρουν ενταμιευμένα Streams από bytes.

3 Streams Εισόδου – Εξόδου ( II ) Oι κλάσεις FileInputStream, FileOututStream δίνουν input και output stream τα οποία διαβάζουν ή γράφουν σε αρχεία. FileInputStream(File file), FileInputStream(String name) FileInputStream(File file), FileInputStream(String name) Oι κλάσεις ZipInputStream, ZipOutputStream Oι κλάσεις ZipInputStream, ZipOutputStream γράφουν και διαβάζουν αρχεία σε ZIP compression format. γράφουν και διαβάζουν αρχεία σε ZIP compression format. ZipInputStream zin = new ZipInputStream(new FileInputStream(“x.zip”)); FileInputStream(“x.zip”)); DataInputStream din = new DataInputStream(zin); DataInputStream din = new DataInputStream(zin); αν έχει την επιθυμητή τιμή. αν έχει την επιθυμητή τιμή. PushbackInputStream pbin = new PushbackInputStream(new H κλάση PushbackInputStream εξετάζει το επόμενο byte H κλάση PushbackInputStream εξετάζει το επόμενο byte FileInputStream(“aaa.dat”)); FileInputStream(“aaa.dat”)); DataInputStream din = new DataInputStream(pbin);

4 InputStream ByteArray InputStream File InputStream Piped InputStream Filter InputStream Sequence InputStream Buffer InputStream Object InputSteam Buffered InputStream Checked InputStream Digest InputStream Inflater InputStream LineNumber InputStream PushBack InputStream DataInput Stream ObjectInput GZIP InputStream Zip InputSteam Jar InputStream DataInput DataOutput Random AccessFile

5 OutputStream ByteArray OutputStream File OutputStream Filter OutputStream Piped OutputStream Object OutputStream Buffered OutputStream Checked OutputStream Digest OutputStream Deflater OutputStreamPrintStream Data OutputStream ObjectOutput GZIP OutputStream Zip OutputSteam Jar OutputStream DataOutput DataInput Random AccessFile

6 Παράδειγμα try { FileOutputStream file = new Προσοχή!!! FileOutputStream(“text.txt”); Κάθε κλάση FileOutputStream file = new Προσοχή!!! FileOutputStream(“text.txt”); Κάθε κλάση BufferedOutputStream buff = new προσθέτει BufferedOutputStream(file); μεθόδους BufferedOutputStream buff = new προσθέτει BufferedOutputStream(file); μεθόδους DataOutputStream data = new DataOutputStream(buff); DataOutputStream data = new DataOutputStream(buff); for(int i = 0; i < 1000; i++) for(int i = 0; i < 1000; i++) data.writeInt(i); data.writeInt(i); data.close(); data.close(); } catch(IOException e) { System.out.println(“Error: “ + e.toString()); }

7 Readers και Writers ( I ) Οι κλάσεις Reader και Writer: έχουν abstract μεθόδους read και write που είναι βασισμένες σε 2-byte Unicode χαρακτήρες και write που είναι βασισμένες σε 2-byte Unicode χαρακτήρες και όχι σε single-byte χαρακτήρες. Π.χ. Το String “1234” σε και όχι σε single-byte χαρακτήρες. Π.χ. Το String “1234” σε Unicode γράφεται (hex), ενώ σε Unicode γράφεται (hex), ενώ σε ASCII γράφεται ASCII γράφεται Το πρόβλημα διορθώνουν οι κλάσεις InputStreamReader, Το πρόβλημα διορθώνουν οι κλάσεις InputStreamReader, OuputStreamWriter οι οποίες μετατρέπουν Unicode OuputStreamWriter οι οποίες μετατρέπουν Unicode χαρακτήρες σε αναπαράσταση χαρακτήρων τοπικού χαρακτήρες σε αναπαράσταση χαρακτήρων τοπικού λειτουργικού και αντίστροφα. λειτουργικού και αντίστροφα. InputStreamReader in = new InputStreamReader(System.in); InputStreamReader in = new InputStreamReader(System.in);

8 Readers και Writers ( II ) Οι κλάσεις FileReader, FileWriter χρησιμοποιούνται για Οι κλάσεις FileReader, FileWriter χρησιμοποιούνται για διάβασμα/γράψιμο σε αρχεία. διάβασμα/γράψιμο σε αρχεία. FileWriter out = new FileWriter(“output.txt”); Ισοδύναμο με: Ισοδύναμο με: OutputStreamWriter out = new OutputStreamWriter( OutputStreamWriter out = new OutputStreamWriter( new FileOutputStream(“output.txt”)); new FileOutputStream(“output.txt”)); FileReader in = new FileReader(“input.txt”); Ισοδύναμο με: InputSteamReader in = new InputStreamReader(new FileInputStream(“input.txt”)); FileInputStream(“input.txt”));

9 Reader Buffered Reader CharArray Reader Filter Reader StringReader Piped Reader InputSteam Reader LineNumber Reader PushBack Reader FileReader

10 Writer Buffered Writer CharArray Writer FilterWriterStringWriterPipedWriterOutputSteam Writer FileWriter PrintWriter

11 Γράψιμο Text Γράψιμο Text Η κλάση PrintWriter χρησιμοποιείται για γράψιμο text, δηλ. Η κλάση PrintWriter χρησιμοποιείται για γράψιμο text, δηλ. για γράψιμο strings και αριθμών σε text format. για γράψιμο strings και αριθμών σε text format. PrintWriter out = new PrintWriter(new FileWriter(“output.txt”)); Ισοδύναμο με: Ισοδύναμο με: PrintWriter out = new PrintWriter(new FileOutputSteam(“output.txt”)); PrintWriter out = new PrintWriter(new FileOutputSteam(“output.txt”)); out.print(“Hello”); out.print(“Hello”); double x = 3; double x = 3; out.print(x); out.print(x); out.print(‘ ‘); out.print(‘ ‘); ! Υπενθύμιση Για να γράψουμε δεδομένα σε binary format χρησιμοποιούμε DataOutputStream. binary format χρησιμοποιούμε DataOutputStream.

12 Διάβασμα Text Διάβασμα Text Δεν υπάρχει στη Java κλάση για διάβασμα ανάλογη του Δεν υπάρχει στη Java κλάση για διάβασμα ανάλογη του DataInputSteam, δηλ. που να επιτρέπει να διαβάζονται data DataInputSteam, δηλ. που να επιτρέπει να διαβάζονται data σε text format. Το πρόβλημα λύνει η BufferedInput κλάση, σε text format. Το πρόβλημα λύνει η BufferedInput κλάση, η οποία έχει readLine() μέθοδο που διαβάζει γραμμή σε text. η οποία έχει readLine() μέθοδο που διαβάζει γραμμή σε text. για γράψιμο strings και αριθμών σε text format. για γράψιμο strings και αριθμών σε text format. BufferedReader in = new BufferedReader(new BufferedReader in = new BufferedReader(newFileReader(“hello.txt”)); String line; String line; while (( line = in.readLine() != null) { ……… } while (( line = in.readLine() != null) { ……… } BufferedReader in2 = new BufferedReader(new BufferedReader in2 = new BufferedReader(newInputStreamReader(System.in));

13 Η κλάση File Ένα αντικείμενο File αντιπροσωπεύει ένα αρχείο ή ένα φάκελλο (directory). Ο κατασκευαστής παίρνει όρισμα το όνομα του αρχείου. File test = new File (“test.txt”); Η java παρέχει ένα σύνολο μεθόδων: boolean exists(), boolean isDirectory(), boolean isFile(), String getName(),String getPath(), boolean mkdir(), boolean canRead(), boolean canWrite(), boolean exists(), long length(), boolean delete()…