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

Σχετικά έγγραφα
ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ

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

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

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

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

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

Week 9: Input / Output

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

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

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

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

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

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


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

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

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

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

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

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

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

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

Βασικά Στοιχεία της Java

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

Streams Input / Output in C++ George Kastrinis

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

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

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

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )

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

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

Βασικά Στοιχεία της Java

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

Στοιχειώδης προγραμματισμός σε C++

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

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

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

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

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

Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ FILE & PROCESS HANDLING

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

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

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

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

Δομημένος Προγραμματισμός (ΤΛ1006)

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

Java Μέρος Ι Αντικειμενοστρεφής Προγραμματισμός - 7

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Δομημένος Προγραμματισμός (ΤΛ1006)

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

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

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

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

Μεθόδων Επίλυσης Προβλημάτων

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

Κατανεμημένα Συστήματα

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

3. Εκφράσεις και έλεγχος ροής

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

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

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Αντικείμενα στη Java. Παύλος Εφραιμίδης. Java Αντικείμενα στη Java 1

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

Αντικείμενα (Objects) στην Java. Αντικείμενα στη Java. Δημιουργία Αντικειμένων. Δηλώσεις Μεταβλητών (2) Ο τελεστής new (1)

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

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

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

ιαφάνειες παρουσίασης #6 (β)

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

ΜΑΘΗΜΑ: Διαδικτυακές Εφαρμογές

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

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

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

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

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

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

Προγραμματιστικές τεχνικές

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

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

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

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

File Handling & I/O ΓΛΩΣΣΙΚΉ ΤΕΧΝΟΛΟΓΊΑ

ΚΕΦΑΛΑΙΑ attributes parameters

11β Δομικά πρότυπα σχεδίασης

Γενικά (για τις γραπτές εξετάσεις)

Εγχειρίδιο Συναρτήσεων. Socket *sopen(const int type, const int protocol, const char *host, const char *service)

Transcript:

Αρχεία Αρχεία και Ρεύματα sequential files(σειριακά αρχεία) direct access(απ'ευθείας πρόσβασης) Ρεύματα (I/O Streams) Ένα ρεύμα είναι μια σειριακή ροή δεδομένων από μία πηγή προς έναν προορισμό. Όταν ένα αρχείο ανοίγει, ένα αντικείμενο δημιουργείται και ένα ρεύμα εισόδου (input stream) συσχετίζεται με αυτό. Για να μεταφέρει δεδομένα ένα πρόγραμμα από ένα αρχείο προς την κεντρική μνήνη, πρέπει να δημιουργήσει ένα ρεύμα εισόδου (inputstream) και να διαβάσει τα δεδομένα. Για να μεταφέρει δεδομένα ένα πρόγραμμα από την κεντρική μνήμη προς ένα αρχείοπρέπει να δημιουργήσει ένα ρεύμα εξόδου (outputstream) και να γράψει τα δεδομένα του. VK 63

ΙΟ Streams Kλάσεις Ανάγνωση Eγγραφή byte(8bit) FileInputStream FileOutputStream char (16bit) FileReader FileWriter int c; int c=70; FileInputStream in = null; FileOutputStream out = null; try { FileReader try { FileWriter in= newfileinputstream("αρχείοa" ); out= newfileoutputstream("αρχείοe"); while ((c = in.read())!=-1) { Κάνε ότι απαιτείται } out.write(c); } finally } finally { if (in!= null) in.close(); } { if (out!= null) out.close(); } Το c=-1 σηματοδοτεί το τέλος του αρχείου VK 64

Βuffered I/O ρεύματα εισόδου Στα προηγούμενα παραδείγματα έγινε χρήση unbuffered I/O ρευμάτων. Τα buffered I/O ρεύματα εισόδου, διαβάζουν δεδομένα από μια περιοχή μνήμης γνωστή ως buffer, ενώ η φυσική API είσοδος, καλείται μόνο όταν το buffer είναι άδειο. Ομοίως, τα buffered I/O ρεύματα εξόδου, γράφουν δεδομένα σε ένα buffer, και η φυσική έξοδος API, καλείται μόνο όταν το buffer είναι πλήρες. Ένα πρόγραμμα μπορεί να μετατρέψει ένα unbuffered I/O ρεύμα, μέσα σε ένα buffered I/O ρεύμα χρησιμοποιώντας το ιδίωμα, όπου το unbuffered I/O ρεύμα περνά στον δομητή του buffered I/O ρεύματος. VK 65

Filtered & BufferedKλάσεις Eνα φίλτρο, φιλτράρει δεδομένα όπως αυτά διαβάζονται ή γράφονται στο ρεύμα. Στην περίπτωση αυτή το ρεύμαφίλτρο, παρέχει επιπλέον λειτουργίες όπως είναι το buffering,η καταμέτρηση γραμμών ή η ομαδοποίηση δεδομένων. FilterInputStream FilterOutputStream BufferedInputStream BufferedOutputStream DataInputStream DataOutputStream BufferedReader InputStreamReader FileReader BufferedWriter OutputStreamWriter FileWriter BufferedReader in = null; String line; try { in= newbufferedreader (newfilereader("αρχείοa")); while ((line = in.readline())!= null) { Κάνε ότι απαιτείται } } finally { if (in!= null) in.close(); } Διαβάζει γραμμές μέχρι το line=null. out= newbufferedwriter (newfilewriter("αρχείοe")); out.write(line); out.newline(); VK 66

Flushing Buffered Streams Συχνά έχει νόημα να γραφτεί ένας bufferσε κρίσιμα σημεία, χωρίς να περιμένουμε για να γεμίσει. Αυτό είναι γνωστό ως flushing the buffer. Μερικές buffered κλάσεις εξόδου, υποστηρίζουν autoflush, που καθορίζεται από μια προαιρετική παράμετρο στο δομητή. Όταν είναι ενεργοποιημένο, ορισμένα γεγονότα, προκαλούν«flush» του buffer. Για παράδειγμα, ένα αντικείμενο autoflush PrintWriter, «εκκενώνει» τον bufferσεκάθεκλήσητουprintlnήτουformat. Stringline=..; PrintWriter out= new PrintWriter(new FileWriter("ΑρχείοE")); out.println(line); VK 67

DataStreams Τα data streams υποστηρίζουν binary I/O για δεδομένα, με τιμές των βασικών τύπων (boolean, char, byte, short, int, long, float, και double) αλλά και με String τιμές. Φροντίζουν στην ουσία για την μετατροπή των δεδoμένων που βρίσκονται σε μορφή Bytes σε δεδομένα που αντιστοιχούν στους βασικούς τύπους. Οι πιο γνωστές υλοποιήσεις είναι η DataInputStream και η DataOutputStream Ενα DataΙnputStream / DataOutputStream μπορεί να δημιουργηθεί μόνο σαν «περιτύλιγμα/wrapper» ενός υπάρχοντος byte stream object, έτσι τα DataStreams παρέχουν ένα buffered file output byte stream. Μέσω της FileInputStream δημιουργείται ένα ρεύμα εισόδου. Η έξοδος του ρεύματος αυτού διοχετεύεται σε έναν buffer (για να αυξήσει την ταχύτητα ροής των δεδομένων καθώς αυτά, δεν τοποθετούνται στο ρεύμα ένα ένα, αλλά κατά ομάδες) που δημιουργείται μέσω της BufferedInputStream. Στη συνέχεια τα δεδομένα του buffer διοχετεύονται σε ένα ρεύμα φίλτρο μετατροπής που δημιουργείται μέσω της DataInputStream. in = new DataInputStream(new BufferedInputStream(new FileInputStream("ΑρχείοE" ))); price = in.readdouble(); unit = in.readint(); desc = in.readutf(); //String τιμές σε φόρμα UTF-8 Χρησιμοποιείται ΕΟF exception αντί για τιμή επιστροφής, δηλ. διαβάζει while (true) out.writedouble(19.99); VK 68