mistä ne tulevat?

33
Anne Benson Tietovirrat ja tiedostot

Upload: ginny

Post on 14-Jan-2016

47 views

Category:

Documents


0 download

DESCRIPTION

Mistä ne tulevat?. Tietovirrat ja tiedostot. Kuinka niitä käsitellään. Minne ne menevät?. Tiedon koodaus it-järjestelmissä. pienin tietoyksikkö bitti kaksi tilaa: nolla (sähkövirtaa ei ole) yksi (sähkövirtaa kulkee) 8 bittiä muodostavat tavun eli merkin - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Mistä ne tulevat?

Anne Benson

Tietovirrat ja tiedostot

Page 2: Mistä ne tulevat?

Anne Benson

Tiedon koodaus it-järjestelmissä

pienin tietoyksikkö bitti– kaksi tilaa:

nolla (sähkövirtaa ei ole)yksi (sähkövirtaa kulkee)

- 8 bittiä muodostavat tavun eli merkin- merkkijärjestelmiä on erilaisia riippuen siitä, kuinka 8 (7) bittiä

on organisoitu,esimerkiksi ASCII(American Standard Code for Information Interchange) ISO Latin-1

- DOS ASCII- EBCDIC (IBM suurkoneet)

Page 3: Mistä ne tulevat?

Anne Benson

Tavuista tieto eli kenttä

Tavut muodostavat tiedon:

Javan alkeismuuttujat (fyysinen organisointi)– int 4 tavua– double 8 tavua

Loogisia, käyttäjän tietojaauton rekisteritunnus (String) AAa – Nnnvähintään kaksi kirjainta ja yksi numerohenkilötunnus ppkkvvA/+/-nnnD,

Page 4: Mistä ne tulevat?

Anne Benson

Kentistä tietokokonaisuuksia(tietueita)

Esimerkiksi

• nide

• tositteen tiedot

• kuorma-auton tiedot

• opiskelijan tiedot

Page 5: Mistä ne tulevat?

Anne Benson

Tietueista tiedostoja ja tietokantoja

Esimerkiksi • asiakkaat• tuotteet• tilaukset• opiskelijat

Page 6: Mistä ne tulevat?

Anne Benson

Java ja tietovirrat

-standarditietovirrat

-merkkivirrat

-poikkeustilanteisiin varautuminen

Page 7: Mistä ne tulevat?

Anne Benson

Tietovirrat IPO InputProcessOutput

SyöttöInput

TulostusOutput

KäsittelyProcess

Tietovarastot

•näppäimistö•viivakoodi•toinen prosessi•verkon yli•tiedosto•tietokanta•jne

•näyttö•kirjoitin•toinen prosessi•verkkoon•tiedosto•tietokanta•jne

Page 8: Mistä ne tulevat?

Anne Benson

Javan tietovirrat Fyysisiä laitteita

Mistä tieto luetaan?

Miten tieto käsitellään?

Minne käsitelty tieto kirjoitetaan?

Page 9: Mistä ne tulevat?

Anne Benson

Javan tietovirrat : java.io – pakkaus Tiedon kaksi esitystapaa

Pienin tiedon talletusyksikkö

Tavu, muodostuu kahdeksasta bitistä: mikä tahansa tieto

InputStream OutputStream

Merkki, muodostuu kahdesta tavusta (16 bittiä): tekstimuotoinen tieto

Reader Writer

Page 10: Mistä ne tulevat?

Anne Benson

Merkkivirtaa luetaan näppäimistöltä

1. Määrittele tiedon lähde

BufferedReader in = new BufferedReader                           (new InputStreamReader(System.in));

Java.lang-pakkauksen System.in: lähettää tavuvirtaa

Talletetaan merkkivirtaa , enter lopettaaVäliaikainen talletuspaikka syöttöpuskuri: BufferedReader

Tiedon lukeminen näppäimistöltä

Page 11: Mistä ne tulevat?

Anne Benson

1. Tieto lähtee tavuina näppäimistöltä -> muunnetaan matkalla syöttöpuskuriin merkkivirraksi (javan io-luokkien tehtävä)

2. Scannerin metodit nextInt(), nextDouble() jne muuntavat tiedon haluttuun muotoon

3. Jos sovelluksessa luetaan tieto ilman Scanneria, täytyy tehdä tiedon muunto Stringistä

Tiedon lukeminen näppäimistöltä

Page 12: Mistä ne tulevat?

Anne Benson

Javan tietovirrat Näppäimistöltä tuleva merkkivirta

BufferedReader

InputStreamReader

InputStream System.in

Merkkivirran lukemiseen tarvitaan luokat:

Page 13: Mistä ne tulevat?

Anne Benson

Javan tietovirrat Näppäimistöltä tuleva merkkivirta

BufferedReader in = new BufferedReader                           (new InputStreamReader(System.in));

Mihin tieto talletetaan:

Puskuri varataan lukemista varten

Mistä tieto saadaan: näppäimistöltä

mistä tieto hankitaan – minne tieto talletetaan

Missä muodossa tietosaadaan?Luetaan tavuja, koodataan merkeiksi

Page 14: Mistä ne tulevat?

Anne Benson

Javan tietovirrat

Tietovirran määrittelyssä tarvitaan seuraavat tiedot:

• miten sovellus käsittelee tietoa

• missä muodossa tieto luetaan/kirjoitetaan:

tavu, merkki, int, double jne

• mikä on tiedon fyysinen lähde/kohde:

levy, kirjoitin, toinen sovellus jne

Page 15: Mistä ne tulevat?

Anne Benson

Javan tietovirrat Tulostaminen näytölle

Tulostaminen näytölle

1. System.out.print – kirjoittaa riville, kirjoituksen jatkokohta jää samalle riville

2. System.out.println - aloittaa kirjoituksen uudelta riviltä

Huomaa: System.out ja System.in ovat System-luokan attribuutteja. Ne määrittelevät aina työasemakohtaisen standardisyöttö- ja tulostusvirran.

Eli ”System” on työasema, järjestelmä jossa sovellus tällä hetkellä toimii

Page 16: Mistä ne tulevat?

Anne Benson

Javan tietovirrat Tekstimuotoisen tiedoston käsittely

1. Kirjoitetaan tiedosto

2. Luetaan tiedoston sisältö ja tulostetaan näytölle

Muistetaan varautua virhetilanteisiin

Page 17: Mistä ne tulevat?

Anne Benson

Tekstitiedoston kirjoittaminen

1. Luetaan esimerkiksi näppäinsyötteenä annettavat rivit

2. Kirjoitetaan tiedosto

Muistetaan varautua virhetilanteisiin

Page 18: Mistä ne tulevat?

Anne Benson

Tekstitiedoston kirjoittaminen

1. Määrittele fyysinen tiedosto File

2. Ohjelmalle kirjoitusalueeksi

PrintWriter

3. Kirjoitettavan tiedoston muoto FileWriter

Page 19: Mistä ne tulevat?

Anne Benson

Tekstitiedoston kirjoittaminen

File tiedostoNimi = new File

(”C:\\temp\\testi.txt”);

PrintWriter kirjoitin = new PrintWriter

(new FileWriter(tiedostoNimi));

Page 20: Mistä ne tulevat?

Anne Benson

Tekstitiedoston kirjoittaminen

-muodostetaan kirjoitettava rivialue, String rivi, joka

saa jostakin tietoa (tässä ei välitetä mistä)

- niin kauan kuin tietoa riittää, kirjoitetaan tiedostoon

rivi = hankitietoawhile(rivi.length() > 0){

tulostus.write(rivi + System.getProperty("line.separator"));

rivi =hankitietoa

}

Page 21: Mistä ne tulevat?

Anne Benson

Tekstitiedoston kirjoittaminen

Esimerkki tekstitiedoston kirjoittamisesta löytyy esimerkistä

TeksitiedostoKirjoittaja.java

Page 22: Mistä ne tulevat?

Anne Benson

Tekstitiedoston lukeminen

Tiedoston määritys:

- luokat java.io-pakkauksessa

BufferedReader – määrittää ohjelmalle lukupuskurin

FileReader – kertoo, että luettava tiedosto on merkkimuotoinen

File – fyysinen kohde levyllä, jota käsitellään

Lukeminen:

String rivi;while ((rivi = luettava.readLine()) != null)

System.out.println(rivi);luettava.close();

Page 23: Mistä ne tulevat?

Anne Benson

Tekstitiedoston lukeminen

Esimerkki tiedostomäärittelystä ja lukemisesta

(ei vielä toimiva ohjelma):

File tdstoNimi = new File(”c:\\testi.txt”);

BufferedReader luettava = new BufferedReader(new FileReader(tdstoNimi));

String rivi;rivi = luettava.readLine();while (rivi != null){

System.out.println(rivi);rivi = luettava.readLine()

}luettava.close();

Page 24: Mistä ne tulevat?

Anne Benson

Tekstitiedoston lukeminen

Tekstitiedoston lukeminen täydellisenä esimerkissä:

TekstitiedostoLukija.java

Page 25: Mistä ne tulevat?

Anne Benson

Poikkeustilanteet

Page 26: Mistä ne tulevat?

Anne Benson

Poikkeustilanteet

Poikkeustilanteisiin varautuminen

java.io – pakkauksen poikkeustilanteet, Exceptions, on suunniteltu I/O-poikkeusten käsittelyyn:

•FileNotFoundException : tiedostoa ei löydy

•IOException: ”yleinen” io-poikkeus

•EOFException: tiedoston loppu - poikkeus

Page 27: Mistä ne tulevat?

Anne Benson

Poikkeustilanteet

Poikkeustilanteisiin varautuminen

Käytetään poikkeuksen kiinniottoa

Lause/lauseet jotka voivat aiheuttaa poikkeuksen, laitetaan try-lohkoon. Poikkeustilanteen selvittely laitetaan catch lohkoon:

try

{

lause1;

lause2;

}

catch (Exception poikkeusolio)

{

System.out.println(poikkeusolio.getMessage());

}

Page 28: Mistä ne tulevat?

Anne Benson

Poikkeustilanteet

Poikkeustilanteisiin varautuminen

Kun sovelluksessa on lauseita, jotka voivat aiheuttaa poikkeustilanteen synnyn, otetaan ne käsittelyyn try – catch lauseilla. Yhteen try- lauseeseen voidaan yhdistää useita catch – lohkoja.

try{lause1;lause2;lause3;

}catch(NumberFormatException nfe){

System.out.println(”Ei numeerista tietoa”);}catch (ArrayIndexOutOfBoundsException aei){

System.out.println(”Taulukkokäsittelyssä indeksointi väärin”);}catch (Exception e){

System.out.println(e.getMessage());}

Page 29: Mistä ne tulevat?

Anne Benson

Poikkeustilanteet

Poikkeustilanteisiin varautuminen

Huomaa:

- tarkat poikkeusilmoitukset laitetaan välittömästi try – lohkon jälkeen

- yleinen Exception tulee aina viimeiseksi

- loppuun voidaan lisätä finally – lohko, joka suoritetaan aina,

oli aiempi suoritus tapahtunut try tai joistakin catch - lohkoista

Page 30: Mistä ne tulevat?

Anne Benson

Poikkeustilanteet

Poikkeustilanteisiin varautuminen

Käytetään poikkeuksen ”heittoa” edelleen metodia kutsuneeseen luokkaan:

public static String getRivit(File tiedosto)throws FileNotFoundException, IOException

Nyt kutsuvassa luokassa pitää olla try-catch –lohko

Page 31: Mistä ne tulevat?

Anne Benson

Poikkeustilanteet

Poikkeustilanteisiin varautuminen

Heittomekanismi:

Luokka1

Luokka2

Luokka3

throws

throws

try{}

catch {}

Page 32: Mistä ne tulevat?

Anne Benson

Lukeminen ja kirjoittaminen

Tärkeitä pakkauksia ja luokkia

1. java.io.*

sisältää tietovirtojen käsittelyn rajapinnat, luokat ja poikkeukset

2 java.util

StringTokenizer

3. java.lang.StringBuffer

merkkijonon käsittely dynaamisesti

Page 33: Mistä ne tulevat?

Anne Benson

Lukeminen ja kirjoittaminen

Näppäimistövirran ja tekstitiedoston käsittelyn esimerkit löytyvät

osion 4 viikon kolme materiaalista