Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

17.2.4 Tiedostoon kirjoittaminen

Vastaavasti kirjoittamista varten avattuun tiedostoon kirjoitettaisiin

	PrintStream fo;
	...
	fo = new PrintStream(new FileOutputStream("taulu.txt"));
	// avataan tiedosto kirjoittamista varten
	// avauksessa vanha tiedosto tuhoutuu

Mikäli avattaessa tiedostoa kirjoittamista varten, ei haluta tuhota vanhaa sisältöä, vaan kirjoittaa vanhan perään, käytetään avauksessa toista parametria, jolla kerrotaan halutaanko kirjoittaa edellisen tiedoston perään ( append):

	fo = new PrintStream(new FileOutputStream("taulu.txt",true));
	// avataan perään kirjoittamista varten

Tiedoston jatkaminen on erittäin kätevä esimerkiksi virhelogitiedostoja kirjoitettaessa.

tiedosto\Kertotaulu.java - Tiedostoon tulostaminen

	import java.io.*;
	/**
	 * Ohjelmalla tulostetaan kertotaulu tiedostoon.  Jos tiedosto on
	 * olemassa, jatketaan vanhan tiedoston perään.
	 * @author Vesa Lappalainen
	 * @version 1.0, 21.02.2003
	 */
	public class Kertotaulu {
	
	  public static void main(String[] args)  {
	    PrintStream fo = null;
	    try {
	      fo = new PrintStream(new FileOutputStream("taulu.txt",true));
	    }  catch (FileNotFoundException ex) {
	      System.out.println("Tiedosto ei aukea"); return;
	    }
	
	    int kerroin = 5;
	
	    try {
	      for (int i=0; i<10; i++)
	        fo.println( i + "*" + kerroin + " = " + i*kerroin);
	    } finally {
	      fo.close();
	    }
	  }
	}

Edellä voisi käyttää PrintStream virran sijasta PrintWriter-luokkaa, joka olisi yhteensopivampi Reader-luokan kanssa:

	PrintWriter fo;
	...
	  fo = new PrintWriter(new FileWriter(nimi,true))

Kuitenkin PrintStream on taas yhteensopiva System.out:in kanssa, joten joissakin tapauksissa tämä puolustaa PrintStream-luokan käyttämistä.

Useimmiten kannattaa kaikki näyttöön tulostavat aliohjelmat/metodit kirjoittaa sellaiseksi, että niille viedään parametrinä se tietovirta, johon tulostetaan. Näin samalla aliohjelmalla voidaan helposti tulostaa sitten näyttöön tai tiedostoon tai jopa kirjoittimelle (joka on vain yksi tietovirta muiden joukossa, esim. Windowsissa PRN-niminen tiedosto).


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys