001 import java.io.*; 002 import fi.jyu.mit.ohj2.*; 003 /** 004 * Esimerkki oliosta joka käsittelee tiedostoa 005 * @author Vesa Lappalainen 006 * @version 1.0, 09.03.2003 007 */ 008 public class LueRek { 009 010 static public class Tuote { 011 private String nimike = ""; 012 private double hinta = 0.0; 013 private int kpl = 0; 014 015 public Tuote() {} 016 public Tuote(String rivi) { parse(rivi); } 017 018 public void parse(String s) throws NumberFormatException { 019 StringBuffer sb = new StringBuffer(s); 020 nimike = Mjonot.erotaEx(sb,'|',nimike); 021 hinta = Mjonot.erotaEx(sb,'|',hinta); 022 kpl = Mjonot.erotaEx(sb,'|',kpl); 023 } 024 025 public String toPrintString() { 026 return Mjonot.fmt(nimike,-20) + " " + Mjonot.fmt(hinta,7,0) + 027 Mjonot.fmt(kpl,4); 028 } 029 030 } 031 032 static public class Tuotteet { 033 private String nimi = ""; 034 035 public Tuotteet(String nimi) { this.nimi = nimi; } 036 037 public boolean tulosta(OutputStream os) { 038 PrintStream out = Tiedosto.getPrintStream(os); 039 BufferedReader fi = Tiedosto.avaa_lukemista_varten("tuotteet.dat"); 040 if ( fi == null ) return false; 041 042 out.println(); out.println(); out.println(); 043 out.println("-------------------------------------------"); 044 045 try { 046 String rivi; Tuote tuote; 047 while ( ( rivi = fi.readLine() ) != null ) { 048 try { 049 tuote = new Tuote(rivi); 050 } catch (NumberFormatException ex) { 051 System.err.println("Virhe: " + ex.getMessage()); 052 continue; 053 } 054 out.println(tuote.toPrintString()); 055 } 056 } catch (IOException ex) { 057 System.err.println("Vikaa tiedostoa luettaessa"); 058 } finally { 059 try { 060 fi.close(); 061 } catch (IOException ex) { 062 System.err.println("Ongelmia tiedoston sulkemisessa"); 063 } 064 } 065 066 067 out.println("-------------------------------------------"); 068 out.println(); System.out.println(); System.out.println(); 069 070 return true; 071 } 072 073 } 074 075 public static void main(String[] args) { 076 Tuotteet tuotteet = new Tuotteet("tuotteet.dat"); 077 if ( !tuotteet.tulosta(System.out) ) { 078 System.err.println("Tuotteita ei saada luetuksi"); 079 } 080 } 081 } 082