Deo zbornika Učimo Javu
Filtriranje tokova
Klase FilterInputStream
i FilterOutputStream
su podklase od InputStream
i OutputStream
koje na neki način modificiraju podatke osnovnih tokova. Rijetko ćete ih koristiti izravno, ali njihove su podklase iznimno važne, posebno DataInputStream
i DataOutputStream
.
Instanciranje
Filter-tok povezujete s osnovnim tako da osnovni proslijedite konstruktoru filter-toka. Na primjer, da biste kreirali novi objekt tipa DataOutputStream
iz objekta FileOutputStream
mogli biste postupiti ovako:
FileOutputStream fos = new FileOutputStream("ln.txt");
DataOutputStream dos = new DataOutputStream(fos);
To se može kombinirati i u jednoj liniji:
DataOutputStream dos = new DataOutputStream(new FileOutputStream("ln.txt"));
Filtrirani tokovi
BufferedInputStream i BufferedOutputStream
Ove klase čitaju i pišu tako da podatke najprije učitaju u taložnik (buffer). Podaci se učitavaju iz taložnika ili u njega upisuju u blokovima, a naknadni pristupi usmjeravaju se direktno prema taložniku.
DataInputStream i DataOutputStream
Ove klase čitaju i pišu podatke koji pripadaju primitivnim Java tipovima, kao i podatke tipa String na način koji ne ovisi o mašini (Big-endian za integer, IEEE-754 za float i double, UTF-8 za Unicode)
PrintStream
Ova ste klasu već susretali preko njenih implementacija System.out
i System.err
. Omogućuje vrlo jednostavno ispisivanje primitivnih vrijednosti, objekata i string literala. Klasa hvata sve iznimke tipa IOException
i namijenjena je ponajprije za debugging.
PushbackInputStream
Ova klasa osigurava pushback taložnik pomoću kojeg je moguće “poništiti” čitanje bajtova sa toka. Kod sljedećeg čitanja sa toka bit će učitani ti “poništeni” bajtovi.
GZIPInputStream i GZIPOutputStream
Ovo su klase iz paketa java.util.zip
i obavljaju kompresiju i dekompresiju podataka.
DigestInputStream i DigestOutputStream
Ovo su klase iz paketa java.security
i izračunavaju tzv. MessageDigest
za tokove koristeći neku jaku hash funkciju.
CipherInputStream i CipherOutputStream
Klase su iz paketa javax.crypto
koji je dio Java Cryptography Extension (JCE), standardnog proširenja Jave, i računaju enkripcije i dekripcije tokova koristeći razne algoritme kao DES, RSA, Blowfish i druge.
ObjectInputStream i ObjectOutputStream
Podklase od of DataInputStream
i DataOutputStream
koje mogu serijalizirati i deserijalizirati Java objekte u čiste bajtove (i obratno). Koristi se kod udaljenog pozivanja metoda (RMI) i za JavaBeans.
Možete kreirati i svoje vlastite podklase od java.io.FilterInputStream
i java.io.FilterOutputStream
koje će izvoditi filtriranja prema vašim potrebama.
Izvor: Elliotte Rusty Harold, Java Lecture Notes, preveo Draško Budin, priredio Damjan Pavlica.