1 / 13

Εισαγωγή στ α Streams

Υπάρχουν πάνω από 60 κλάσεις για input/output στο πακέτο java.io.*; Ενα αντικείμενο από το οποίο μπορεί να διαβαστεί μια ακολουθία bytes λέγεται input stream και ένα αντικείμενο στο οποίο μπορεί να γραφτεί μια ακολουθία bytes λέγεται output stream.

doli
Download Presentation

Εισαγωγή στ α Streams

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

  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 DataInput Random AccessFile Jar InputStream DataOutput

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

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

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

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

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

  10. Writer Buffered Writer CharArray Writer FilterWriter OutputSteam Writer PipedWriter PrintWriter StringWriter FileWriter

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

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

  13. Ένα αντικείμενο 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()… Η κλάση File

More Related