Back Up Next

Bralniki in pisalniki - Reader in Writer

 
Java 1.1 je poleg tokov prinesla še binarnim tokovom analogne razrede znakovnih tokov, ki jim rečemo bralniki in pisalniki, namenjeni pa so znakovnemu vhodu in izhodu;
razlog za uvedbo bralnikov in pisalnikov je bila predvsem boljša podpora internacionalizaciji;
prej predstavljenim razredom so ekvivalentni:
 
Reader - InputStream in Writer - OutputStream
FileReader - FileInputStream in FileWriter - FileOutputStream
BufferedReader - BufferedInputStream in BufferedWriter - BufferedOutputStream
ker DataInputStream in DataOutputStream delata z binarnimi podatki, ni njima ekvivalentnih razredov tipa Reader
bralniki in pisalniki podpirajo vse metode ekvivalentnih binarnih tokovnih razredov, imajo pa tudi nekatere dodatne metode; npr. BufferedReader vsebuje novo uporabno metodo - readLine(), ki preber vrstico podatkov iz vhodnega toka.
InputStreamReader in OutputStreamWriter sta dva nova razreda, ki služita za pretvorbo med binarnimi in znakovnimi tokovi. 
 
InputStreamReader bere iz binarnega vhodnega toka InputStream ter pretvarja prebrane bajte v znake po določenem znakovnem kodiranju (character encoding).
OutputStreamWriter zapiše znakovni tok Writer na izhodni tok in sproti pretvarja znake v bajte po določenem znakovnem kodiranju.

import java.io.*;
class test {
    public static void main (String argv[ ]) {
        BufferedReader vhod;
        BufferedWriter izhod;
        String a;

        try {
            vhod = new BufferedReader(new InputStreamReader(System.in));  // nov znakovni tok iz std. vhoda
            izhod=new BufferedWriter(new FileWriter("pisi"));             // pišemo v datoteko

            while ((a=vhod.readLine())!=null) {         // beremo celo vrstico
                System.out.println("vneseni niz: " + a);
                izhod.write(a,0,a.length());            // pišemo niz 
            }
            izhod.close();
        }
        catch (Exception e) {
            System.err.println("Napaka!!!");
        }
    }
}

 
 
Back Up Next