Første
Java Stream IO serie, Planche nr. 16
Kursus Indhold

Udskrift af : Java Stream IO

Planche 1 : Java Stream IO

Stream IO handler om

Planche 2 : En datastrøm?

En datastrøm er en forbindelse mellem en kilde og en aftager, hvorigennem der flyder data.

En datastrøm flyder fra kilde til modtager.

Planche 3 : Filtre

Flere datastrømme kan kobles sammen ved hjælp af filter-objekter.

Et filter er en klasse, der konverterer en datastrøm med et format til en datastrøm med et andet format.

Filtre svarer til pipes i UNIX og DOS

Planche 4 : Grundklasser

To grundlæggende, abstrakte klasser er defineret:

Disse to klasser - og deres myriader af afledte - er importeret fra java.io.*; To andre, grundlæggende og abstrakte klasser er

De findes i samme bibliotek - og har masser af afledte.

Planche 5 : Forskelle

Planche 6 : IO-undtagelse

Planche 7 : Vigtige Input-metoder

Eksempel:
    if (s.read(bbuffer) != bbuf.length) ;
Læser tegn fra strømmen s ind i byte array bbuffer. Metoden returner antallet af bytes, der er overført, og sammenligner det med max-længden af bufferen. Hvis strømmen er nået til EOF, returneres -1 ved alle efterfølgende kald. Det er en forældet (C/C++ lignende metode).

Planche 8 : Andre input-metoder

Planche 9 : Almindelige klasser

Eksempel

InputStream s = new BufferedInputStream(new FileInputStream("Filnavn.txt"));
Reader s = new BufferedReader(new FileReader("Filnavn.txt"));

Bemærk, at sidstnævnte metode automatisk konverterer fra bytes (ISO8859/1) til char (Unicode).

Planche 10 : Avancerede klasser

Definerer (via interface DataInput) en række direkte metoder

f.eks.

osv.

Der er en for hver primitiv datatype

DataInputStream opretter undtagelsen EOFException.

ObjectInputStream....

Planche 11 : Vigtige output-metoder

Planche 12 : Vigtige klasser

Analog til input:

Planche 13 : Fil IO - Opgave


class FilKopi {

public static void main (String[] args) {
 DataInput    aDI = new DataInputStream(new FileInputStream ("kilde"));
 DataOutput   aDO = new DataOutputStream(new FileOutputStream ("dest"));
 String line ;

 while ((line = aDI.readLine()) != null) {
	StringBuffer modifiedLine = new StringBuffer (line);
        // ...
        // Her kunne indsættes kode, som gør noget ved modifiedLine
        //
	aDO.writeBytes(modifiedLine.toString());
 }
 aDI.close() ;
 aDO.close() ;
 }
}

Prøve at gøre denne kode færdig herunder ret fejl og fjern warnings (undtagen deprecated), fang exceptions og behandl dem pænt. Omskrivning er nødvendig.

Planche 14 : Specialklasser

PrintStream og PrintReader! eller og Standard IO er klassevariable (ikke objekter): System.out, System.err og System.in

Planche 15 : Pipe IO - Opgave

Omskriv den forrige opgave, så den kan fungere som et filterprogram i Unix eller DOS, og at det interne format kan håndteres som String-typer. Hints: Hvorfor kan 2 og 3 ikke bruges direkte?

Planche 16 : Java IO


© 2000 BLA*net - Leif E. Andersen, leander@blanet.dk
Første
Java Stream IO serie, Planche nr. 16