seminarski rad-outputstream.doc
TRANSCRIPT
Veleučilište u RijeciStručni studije poslovne informatike
Seminarski rad
Klasa OutputStream
Student: Tihomir BrdarMentor: Ivan PogarčićPredmet: Objektno orijentirane tehnologije I
Rijeka, veljača 2008.
Sadržaj
Sadržaj.....................................................................................................................................2Uvod..........................................................................................................................................3
java.io Class BufferedWriter..................................................................................................3Članovi klase BufferedWriter..........................................................................................4
Polja ( Fields ).........................................................................................................................4Konstruktori ( Constructors )..................................................................................................5
BufferedWriter....................................................................................................................5BufferedWriter....................................................................................................................5
Metode ( Methods ).................................................................................................................5write....................................................................................................................................5write....................................................................................................................................6writer...................................................................................................................................6newLine...............................................................................................................................7flush.....................................................................................................................................7close....................................................................................................................................7
Klasa Writer..........................................................................................................................8java.io Class Writer.................................................................................................................8Polja( Fields )..........................................................................................................................9
lock......................................................................................................................................9Konstruktori ( Constructors )..................................................................................................9
Writer..................................................................................................................................9Writer..................................................................................................................................9
Metode ( Methods ).................................................................................................................9write....................................................................................................................................9write..................................................................................................................................10write..................................................................................................................................10write..................................................................................................................................10write..................................................................................................................................11flush...................................................................................................................................11close..................................................................................................................................11
Primjeri korištenja klase BufferedWriter................................................................12BufferedWriter: close().........................................................................................................12Primjer zapisivanja teksta u file............................................................................................12
Uvod
java.io Class OutputStream
java.lang.Object java.io.OutputStream
Klasa OutputStream je apstraktna klasa i ona je super klasa svih klasa koje prezentiraju izlazni tok podataka.
Izlazni tok prihvaća izlazne bajtove i šalje ih u neki kanal.
Aplikacije to trebaju kako bi definirale podklasu od klase OutputStream koja mora dobaviti barem jednu metodu koja će zapisati bajt u output.
Članovi klase OutputStream
Konstruktori ( Constructors )
OutputStream
public OutputStream ( )
Metode ( Methods )
write
public abstract void write (int b)throws IOException
Piše specificirani bajt u njegov izlazni tok. Glavni dogovor za write je da je jedan bajt upisan u izlazni tok. Bajt koji se treba upisati je osmi nisko poredan bit argumenta b. Visoko poredan 24 bit od argumenta b je ignoriran.
Podklase od OutputStream mora omogućiti implementaciju ove metode.
Parametri: b - bajt
Izuzeci: IOException – Ako se dogodi I/O greška. Posebice IOException može biti izbačena ako je izlazni tok zatvoren.
write
public void write(byte[] b) throws IOException
Ova metoda zapisuje b dužinu bajtova iz specificiranog ajt polja u ovaj izlazni tok.
Glavni dogovor za write(b) je da bi trebao imati točno jednaki efekt kao poziv write(b, o, b.length).
Parametri: b– podatak
Izuzeci:IOException – Ako se dogodi I/O greška
writer
public void write(byte[] b, int off, int len) throws IOException
Zapisuje dužinu bajtova iz specificiranog bajt polja startajući kod granaja off ovog izlaznog toka. Glavni dogovor za write (b, off, len) je da su neki bajtovi u polju b zapisani u izlazni tok u poretku; element b[off] je prvi bajt koji je zapisan a b[off+len-¸1] je zadnji bajt koji je zapisan ovom operacijom.
Ako je b jednak nuli, NullPointerException je poslana.
Ako je off negativan, ili je len negativan, ili ako je off+len veći od dužine polja b, tada je poslana iznimka IndexOutOfBoundsException.
Parametri: b- podatakoff- startni ogranak u podatkulen – broj bajtova za zapis
Izuzeci:
IOException – Ako se dogodi I/O greška. Posebice IOException može biti izbačena ako je izlazni tok zatvoren.
flush
public void flush() throws IOException
Poplavljuje ovaj izlazni tok i tjera svaki baferiran izlazni bajt da bude zapisan. Glavni dogovor kod flush je da se pozove ako su indikacije za to, ako je bilo koji bajt prethodno zapisan buferiran od impementacije izlaznog toka, takvi bajtovi moraju odmah biti zapisani na njihovo zamišljeno mjesto.
Flush metoda OutputStream – a ne radi ništa.
Izuzeci:IOException – Ako se dogodi I/O greška
close
public void close() throws IOException
Zatvara ovaj izlazni tok i pušta sve sistemske resurse povezane sa ovim tokom. Glavni dogovor kod close je ta zatvori izlazni tok. Zatvoreni tok ne može činiti izlazne operacije i ne može biti ponovno otvoren.
Close metoda OutputStream – a ne radi ništa.
Izuzeci:IOException – Ako se dogodi I/O greška
Klasa OutputStreamWriter
java.io Class OutputStreamWriterjava.lang.Object java.io.Writer java.io.OutputStreamWriter
Direktna podklasa - FileWriter
public class OutputStreamWriter extends Writer
OutputStreamWriter je most između znakovnog toka i bajtovnog toka. Znakovi zapisani u njega su kodirani u bajtove koristeći specijalni charset. Taj skup znakova koji on koristi može biti specificiran imenim ili može biti dat eksplicitno, ili može biti prihvaćen znakovni skup platforme.
Svaka invookacija write() metode uzrokuje da konverter za kodiranje bude pozvan na zadanim znakovima. Rezultirani bajtovi su nakupljeni u buferu prije nego što su zapisani u donji izlazni tok. Veličina ovog bufera može biti specificirana ali i default veličina je dovoljno velika za većinu namjena. Znakovi prebačeni write() metodom nisu buferirani.
Za vrhunsku efikasnost, uzimajući u obzir omotavanje OutputStreamWriter – a između BufferedWriter – a kako bi se izbjegle učestale invokacije konvertera. Na primjer:
Writer out = new BufferedWriter(new OutputStreamWriter(System.out));
Polja( Fields )
lock
lock
.
Konstruktori ( Constructors )
OutputStreamWriter
Public OutputStreamWriter(OutputStream out, String charsetName)Throws UnsupportedEncodingException
Kreira OutputStreamWriter koji koristi navedeni skup znakova.
Parametri:out – izlazni tokcharsetName – naziv skupa znakova
Izuzeci:UnsupportedEncodingException – Ako navedeno kodiranje nije podržano
OutputStreamWriter
public OutputStreamWriter(OutputStream out)
Kreira OutputStreamWriter koji koristi zadano znakovno kodiranje
Parametri:out – izlazni tok
OutputStreamWriter
public OutputStreamWriter(OutputStream out, Charset cs)
Kreira OutputStreamWriter koji koristi zadani skup znakova.
Parametri:out – izlazni tokcs – skup znakova
OutputStreamWriter
public OutputStreamWriter(OutputStream out, CharsetEncoder enc)
Kreira OutputStreamWriter koji koristi zadani skup znakova za kodiranje
Parametri:out – izlazni tokenc – skup znakova za kodiranje
Metode ( Methods )
getEncoding
public String getEncoding()
Vraća ime znaka za kodiranje koji je korišten od strane toka.
Ako kodiranje ima povijesno ime, ime je vraćeno, inače je kodirano kanoničko ime vraćeno.
Ako je kreirana instanca sa OutputStreamWriter(OutputStream, String) , konstruktor tada vraćeno ime, koje je jedinstveno za kodiranje može razlikovati od imena poslanom konstruktoru. Ova metoda može vratiti vrijednost nule ako je tok zatvoren.
write
public void write(int c) throws IOException
Zapisuje jedan znak.
Parametri:c – int specificira znak koji će biti zapisan
Izuzeci:IOException – Ako se dogodi I/O greška
write
public void write(char[] cbuf, int off, int len) throws IOException
Zapisuje dio iz polja znakova.
Parametri: cbuf – Polje znakova
off - ogranak od kuda počinje pisanje znakovalen – broj znakova za zapisivanje
Izuzeci:IOException – Ako se dogodi I/O greška
write
public void write(String str, int off, int len) throws IOException
Zapisuje dio stringova.
Parametri: str – stringoff - ogranak od kuda počinje pisanje znakovalen – broj znakova za zapisivanje
Izuzeci:IOException – Ako se dogodi I/O greška
flush
public void flush() throws IOException
Poplavljuje tok.
Izuzeci:IOException – Ako se dogodi I/O greška
close
public void close() throws IOException
Zatvara tok.
Izuzeci:IOException – Ako se dogodi I/O greška
Primjeri korištenja klase BufferedWriter
* * Java Network Programming, Second Edition * Merlin Hughes, Michael Shoffner, Derek Hamner * Manning Publications Company; ISBN 188477749X * * http://nitric.com/jnp/ * * Copyright (c) 1997-1999 Merlin Hughes, Michael Shoffner, Derek Hamner; * all rights reserved; see license.txt for details. */
import java.io.*;
public class SimpleOut { public static void main (String[] args) throws IOException { for (int i = 0; i < args.length; ++ i) { println (args[i]); } }
public static void println (String msg) throws IOException { synchronized (System.out) { for (int i = 0; i < msg.length (); ++ i) System.out.write (msg.charAt (i) & 0xff); System.out.write ('\n'); } System.out.flush (); }}
/* all of the write() methods of class OutputStream are declared as throwing IOException */