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

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

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

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

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

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

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

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

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

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

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

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

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

Week 9: Input / Output

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

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

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

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

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

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

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

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

10 ΕΙΣΟΔΟΣ ΕΞΟΔΟΣ ΔΕΔΟΜΕΝΩΝ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. Είσοδος/Έξοδος σε αρχεία. Ρεύµατα - Streams

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

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

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

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

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

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

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

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

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

Κλάσεις και Αντικείµενα

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

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

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

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

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

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

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές (ΗΥ)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια

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

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

Σύστηµα Αρχείων και Καταλόγων


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

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

Πληροφορική 2. Δομές δεδομένων και αρχείων

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

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

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

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

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

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

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

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

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

Λειτουργικά Συστήματα (Λ/Σ)

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

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

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

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

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

Εισαγωγή στην Πληροφορική. Α σ κ ή σ ε ι ς σ τ η ν ι α χ ε ί ρ ι σ η Μ ν ή µ η ς. Αντώνης Σταµατάκης

Λειτουργικό Σύστημα: διαχείριση πόρων. Τι είναι ένα αρχείο ; Διαχείριση αρχείων. Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

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

ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ)

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

Προγραμματισμός Ι (ΗΥ120)

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

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

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

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

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

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

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

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

printf Οι κωδικοί (format codes) του printf για διάφορους τύπους δεδοµένων είναι:

Κύρια μνήμη. Μοντέλο λειτουργίας μνήμης. Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (ΙI)


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

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

Περιεχόμενα ΜΕΡΟΣ ΠΡΩΤΟ. Πρόλογος... 13

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 8: Αρχεία. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Υπολογιστές Ι. Άδειες Χρήσης. Εισαγωγή. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΚΕΦΑΛΑΙΑ attributes parameters

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ, ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

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

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

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

H ΓΛΩΣΣΑ C. Μάθηµα 16: Είσοδος/Έξοδος: Συναρτήσεις Eξόδου. ηµήτρης Ψούνης

Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Transcript:

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

Ρεύµατα (Streams) 2 Ένας ορισµός του ρεύµατος Αφαιρετική έννοια για κάτι το οποίο παράγει (πηγή εισόδου) ή καταναλώνει (προορισµός εξόδου) δεδοµένα Είδη ρευµάτων byte, κυρίως για δυαδικά δεδοµένα χαρακτήρες, κυρίως για δεδοµένα κειµένου

Προκαθορισµένα Ρεύµατα 3 Προκαθορισµένα ρεύµατα System.in, System.out, System.err Πρόκειται για ρεύµατα δυαδικών δεδοµένων System.in Προκαθορισµένο ρεύµα εισόδου Συνήθως αντιστοιχεί στην είσοδο από το πληκτρολόγιο System.out Προκαθορισµένο ρεύµα φυσιολογικής εξόδου Συνήθως αντιστοιχεί στην έξοδο προς την οθόνη System.err Προκαθορισµένο ρεύµα εξόδου για σφάλµατα Συνήθως αντιστοιχεί στην έξοδο προς την οθόνη

Μορφοποιηµένη Έξοδος στην Οθόνη 4 Η κλάση PrintStream Τα αντικείµενα System.out και System.err είναι τύπου PrintStream, o οποίoς επιτρέπει τη µορφοποιηµένη έξοδο byte Υπάρχει αντίστοιχη κλάση PrintWriter για µορφοποιηµένη έξοδο χαρακτήρων print, println format ή printf (όπως η printf της C) UsingPrintf

Συµβολοσειρά Μορφοποίησης (1/3) 5 οµή συµβολοσειράς µορφοποίησης %[θέση$] [σηµαίες] [πλάτος] [.ακριβεια] τύπος Θέση Για επαναχρησιµοποίηση της ίδιας παραµέτρου σε διαφορετικά σηµεία, ενδεχοµένως µε διαφορετικό τύπο Για αλλαγή της σειράς εµφάνισης των παραµέτρων Πλάτος Ελάχιστο πλάτος εµφάνισης (δεξιά στοίχιση) Σηµαία: '-' Αριστερή στοίχιση µέσα στο ελάχιστο πλάτος

Συµβολοσειρά Μορφοποίησης (2/3) 6 ιάφορα %% (%) %n (ορθή αλλαγή γραµµής ανάλογα µε το λειτουργικό) Τύπος String %s, %S Ακρίβεια: µέγιστο πλάτος κειµένου (το κόβει αν είναι παραπάνω) Τύπος Character %c, %C Τύπος Boolean %b, %B

Συµβολοσειρά Μορφοποίησης (3/3) 7 Ακέραιος %d, %x, %X, %o ακρίβεια: δεν επιδέχεται Πραγµατικός %f, %e, %E Η printf λαµβάνει υπόψη τις τοπικές ρυθµίσεις του συστήµατος (Locale) ακρίβεια: αριθµός δεκαδικών (γίνεται στρογγυλοποίηση) Σηµαίες για αριθµούς '+': προσθέτει ένα + µπροστά από τους θετικούς ' ': προσθέτει ένα κενό µπροστά από θετικούς για αριστερή στοίχιση µε αρνητικούς '0': γεµίζει µε µηδενικά αντί κενών το ελάχιστο πλάτος ',': εµφανίζει τον διαχωριστή χιλιάδων

Είσοδος από το Πληκτρολόγιο 8 Η απευθείας χρήση του System.in είναι δύσκολη Χρησιµοποιείται η βοηθητική κλάση java.util.scanner Αρχικοποίηση της Scanner µε το System.in Scanner scanner = new Scanner(System.in); Μέθοδοι για ανάγνωση δεδοµένων nextbyte(), nextshort(), nextint(), nextlong() nextfloat(), nextdouble() nextboolean() nextline() για ανάγνωση συµβολοσειράς ή χαρακτήρα Λαµβάνει υπόψη τις τοπικές ρυθµίσεις uselocale() AddInt, AddDouble

Ρεύµατα Byte 9 Είσοδος και έξοδος πληροφορίας ανά 8 bit Χαµηλού επιπέδου είσοδος και έξοδος, στην οποία στηρίζονται οι υπόλοιπες κλάσεις εισόδου και εξόδου Αφηρηµένες κλάσεις InputStream, OutputStream Μέθοδοι.read(), διαβάζει το επόµενο byte και το επιστρέφει ως int, ή επιστρέφει -1 αν έφτασε το τέλος του ρεύµατος.write(int b), γράφει ένα byte (µέσω int).write(byte[] a), γράφει έναν πίνακα από byte Αρχεία στο δίσκο FileInputStream, FileOutputStream To µονοπάτι προς το αρχείο δίνεται ως παράµετρος στον κατασκευαστή io.copybytes

Ρεύµατα Χαρακτήρων (1/2) 10 Είσοδος και έξοδος χαρακτήρων Μετατροπή από/προς Unicode (UTF-8) αναπαράσταση χαρακτήρων µέσα στη Java (16 bit) προς/από το τοπικό σύνολο χαρακτήρων συστήµατος (8 bit) Αφηρηµένες κλάσεις Reader, Writer Μέθοδοι.read(), διαβάζει τον επόµενο χαρακτήρα και τον επιστρέφει ως int, ή -1 αν έφτασε στο τέλος.write(int b), γράφει ένα χαρακτήρα (µέσω int).write(string str1), γράφει µια συµβολοσειρά.write(char[] buf), γράφει πίνακα χαρακτήρων

Ρεύµατα Χαρακτήρων (2/2) 11 Αρχεία στο δίσκο FileReader, FileWriter To µονοπάτι προς το αρχείο δίνεται ως παράµετρος στον κατασκευαστή Γενικές κλάσεις µετατροπής χαρακτήρων - bytes InputStreamReader, OutputStreamWriter Χρησιµοποιούν ρεύµατα byte για είσοδο/έξοδo byte και αναλαµβάνουν την µετατροπή σε/από χαρακτήρες Τα αντικείµενα ρευµάτων byte δίνονται ως παράµετρος στον κατασκευαστή τους Π.χ. για ανάγνωση/εγγραφή χαρακτήρων πάνω από δικτυακά sockets io.copycharacters

Ενδιάµεση Μνήµη (1/2) 12 Είσοδος/έξοδος χωρίς ενδιάµεση µνήµη Το λειτουργικό σύστηµα πρέπει να διαχειριστεί την κάθε κλήση για είσοδο και έξοδο ξεχωριστά Σπατάλη πόρων Είσοδος/έξοδος µε ενδιάµεση µνήµη Χώρος στη µνήµη που πρέπει να γεµίσει για να κληθεί το λειτουργικό για είσοδο ή έξοδο Καλύτερη διαχείριση πόρων

Ενδιάµεση Μνήµη (2/2) 13 Κλάσεις για bytes BufferedInputStream, BufferedOutputStream Κλάσεις για χαρακτήρες BufferedReader, BufferedWriter Αρχικοποίηση Αντικείµενο κλάσης χωρίς ενδιάµεση µνήµη ως παράµετρος στον κατασκευαστή BufferedReader in = new BufferedReader(new FileReader("in.txt")); Επιβολή άµεσης εξόδου της ενδιάµεσης µνήµης.flush()

Είσοδος - Έξοδος Γραµµής Κειµένου 14 BufferedReader, BufferedReader f; f = new BufferedReader(new FileReader("a.txt")); readline() ιαβάζει γραµµή ανεξάρτητα από το λειτουργικό σύστηµα (είτε τελειώνει µε '\r' ή '\r\n' ή '\n') PrintWriter PrintWriter f = new PrintWriter(new BufferedWriter(new FileWriter("b.txt"))); print, println, format, printf Μορφοποιηµένη έξοδος χαρακτήρων io.copylines, io.countwords

Ρεύµατα εδοµένων 15 Είσοδος και έξοδος δυαδικών δεδοµένων Πρωτόγονοι τύποι και String ως δυαδικά δεδοµένα ιεπαφές DataInput, DataOutput Πιο δηµοφιλείς κλάσεις που τις υλοποιούν DataInputStream, DataOutputStream Μέθοδοι writeint(), writedouble(), writeutf() readint(), readdouble(), readutf() Η ανάγνωση γίνεται µέχρι να προκύψει EOFException io.data

Ρεύµατα Αντικειµένων (1/2) 16 Serializable Η κλάση, αντικείµενα της οποίας θέλουµε να στείλουµε (πάρουµε) σε (από) ένα ρεύµα αντικειµένων θα πρέπει Nα δηλώσει ότι υλοποιεί τη διεπαφή serializable Να περιέχει µόνο πρωτόγονους τύπους ή και κλάσεις, οι οποίες όµως επίσης υλοποιούν τη διεπαφή serializable, Η διεπαφή serializable δεν ορίζει µεθόδους, απλά δηλώνει σηµασιολογικά ότι επιτρέπεται το serialization

Ρεύµατα Αντικειµένων (2/2) 17 Κλάσεις ObjectInputStream, ObjectOutputStream Αρχικοποίηση Περιτύλιγµα ενός ρεύµατος byte new ObjectOutputStream(new FileOutputStream("a")); new ObjectInputStream(new FileInputStream("b")); Μέθοδοι.writeObject().readObject(), η οποία απαιτεί type casting io.persisenttime, io.flattentime, io.inflatetime io.student, io.secretary

Πολύπλοκα Αντικείµενα 18 Το serialization χρησιµοποιείται πολλές φορές για τη "βαθιά" αντιγραφή αντικειµένων io.complex, io.human, io.home

Πολλαπλές Εγγραφές 19 Έστω ότι γράφουµε πολλές φορές το ίδιο αντικείµενο στο ίδιο ρεύµα Object ob = new Object(); out.writeobject(ob); out.writeobject(ob); Στην πράξη το γράφουµε µόνο µία φορά και η δεύτερη είναι απλή αναφορά στο ίδιο αντικείµενο Στο παρακάτω παράδειγµα οι δύο µεταβλητές δείχνουν στο ίδιο αντικείµενο Object ob1 = in.readobject(); Object ob2 = in.readobject(); io.multipleobjects

Αρχεία Τυχαίας Προσπέλασης 20 Γιατί τα χρειαζόµαστε; Για εφαρµογές όπου διαβάζουµε ή γράφουµε συγκεκριµένες εγγραφές και όχι όλο το αρχείο Αρχικοποίηση RandomAccessFile r; r = new RandomAccessFile("random.dat", "r"); r = new RandomAccessFile("random.dat", "rw"); Μετακίνηση (σε bytes) από την αρχή του αρχείου long newpos = 100; r.seek(newpos);

Αρχεία Τυχαίας Προσπέλασης 21 Μέθοδοι για εγγραφή και ανάγνωση byte int read(), int read(byte[] b) write(int b), write(byte[] b) Υλοποιεί τη διεπαφή DataInput, DataOutput writeint(), writedouble(), writeutf() readint(), readdouble(), readutf() io.randomaccessdemo

Η Κλάση File 22 Αναπαριστά µια απόλυτη ή σχετική διεύθυνση ενός αρχείου ή φακέλου σε ένα σύστηµα αρχείων File f1 = new File("input.txt"); File f2 = new File("../examples"); Χρησιµότητα Όχι για άνοιγµα ή επεξεργασία αρχείων Για ανάκτηση πληροφοριών σχετικά µε τα αρχεία Για λειτουργίες σε αρχεία και φακέλους ιαγραφή και µετονοµασία αρχείων, δηµιουργία φακέλων Ανεξάρτητο από το λειτουργικό σύστηµα Περιέχει στοιχεία, όπως οι χαρακτήρες διαχωρισµού φακέλων και διαδροµών

Μέθοδοι ιαχείρισης ιευθύνσεων 23 Έστω εκτέλεση του File a = new File("../example/input.txt"); Στο φάκελο c:\java\example στα Windows /home/cafe/java/example στο Linux Μέθοδος a.tostring() a.getname() a.getparent() a.getabsolutepath() a.getcanonicalpath() input.txt..\example c:\java\example\..\ example\input.txt c:\java\example\ input.txt Windows..\example\input.txt../examples/input.txt input.txt../example Linux /home/cafe/java/example/../ example/input.txt /home/cafe/java/example/inp ut.txt

Μέθοδοι Πληροφόρησης 24.isAbsolute().exists().isFile() ή.isdirectory().lastmodified().length().list() Επιστρέφει τα περιεχόµενα καταλόγου File[] File.listRoots() Επιστρέφει όλους τους root φακέλους του συστήµατος io.filestuff

Μέθοδοι ιαχείρισης 25.delete() ιαγραφή αρχείου.mkdir() ηµιουργία καταλόγου.mkdirs() ηµιουργία καταλόγου και όλων όσων αναφέρονται στη διαδροµή και δεν υπάρχουν.renameto(file f) Μετονοµασία