Linux - Friheden til at programmere i Java: Version 0.7.20040516 - 2020-12-31 | ||
---|---|---|
forrige | Kapitel 15. Datastrømme og filhåndtering | næste |
Herunder læser vi en fil og udregner filens tjeksum og antallet af linjer i filen.
import java.io.*; import java.util.zip.*; public class UndersoegFil { public static void main(String[] args) throws IOException { FileInputStream fil = new FileInputStream("skrevet fil.txt"); BufferedInputStream bstrøm = new BufferedInputStream(fil); CRC32 tjeksum = new CRC32(); CheckedInputStream chkstrøm = new CheckedInputStream(bstrøm,tjeksum); InputStreamReader txtstrøm = new InputStreamReader(chkstrøm); LineNumberReader ind = new LineNumberReader(txtstrøm); String linje; while ((linje=ind.readLine())!= null) System.out.println("Læst: "+linje); System.out.println("Antal linjer: " +ind.getLineNumber()); System.out.println("Checksum (CRC):" +tjeksum.getValue()); } }
Resultatet bliver
Læst: person0 k 43 Læst: person1 k 10 Læst: person2 k 16 Læst: person3 k 11 Læst: person4 k 21 Antal linjer: 5 Checksum (CRC):3543848051
Læg mærke til, hvordan vi hægter datastrøm-objekterne sammen i en kæde ved hele tiden at bruge det forrige objekt i som parameter til konstruktørerne: Filindlæsning, buffering, tjeksum, gå fra binær til tekstbaseret indlæsning (InputStreamReader) og linjetælling.
While-løkken er skrevet meget kompakt med en tildeling (linje=ind.readLine()) og derefter en sammenligning, om værdien af tildelingen var null ( (..) != null).