mistä ne tulevat?

Post on 14-Jan-2016

47 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

Anne Benson

Tietovirrat ja tiedostot

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)

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,

Anne Benson

Kentistä tietokokonaisuuksia(tietueita)

Esimerkiksi

• nide

• tositteen tiedot

• kuorma-auton tiedot

• opiskelijan tiedot

Anne Benson

Tietueista tiedostoja ja tietokantoja

Esimerkiksi • asiakkaat• tuotteet• tilaukset• opiskelijat

Anne Benson

Java ja tietovirrat

-standarditietovirrat

-merkkivirrat

-poikkeustilanteisiin varautuminen

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

Anne Benson

Javan tietovirrat Fyysisiä laitteita

Mistä tieto luetaan?

Miten tieto käsitellään?

Minne käsitelty tieto kirjoitetaan?

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

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ä

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ä

Anne Benson

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

BufferedReader

InputStreamReader

InputStream System.in

Merkkivirran lukemiseen tarvitaan luokat:

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

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

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

Anne Benson

Javan tietovirrat Tekstimuotoisen tiedoston käsittely

1. Kirjoitetaan tiedosto

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

Muistetaan varautua virhetilanteisiin

Anne Benson

Tekstitiedoston kirjoittaminen

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

2. Kirjoitetaan tiedosto

Muistetaan varautua virhetilanteisiin

Anne Benson

Tekstitiedoston kirjoittaminen

1. Määrittele fyysinen tiedosto File

2. Ohjelmalle kirjoitusalueeksi

PrintWriter

3. Kirjoitettavan tiedoston muoto FileWriter

Anne Benson

Tekstitiedoston kirjoittaminen

File tiedostoNimi = new File

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

PrintWriter kirjoitin = new PrintWriter

(new FileWriter(tiedostoNimi));

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

}

Anne Benson

Tekstitiedoston kirjoittaminen

Esimerkki tekstitiedoston kirjoittamisesta löytyy esimerkistä

TeksitiedostoKirjoittaja.java

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();

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();

Anne Benson

Tekstitiedoston lukeminen

Tekstitiedoston lukeminen täydellisenä esimerkissä:

TekstitiedostoLukija.java

Anne Benson

Poikkeustilanteet

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

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());

}

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());}

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

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

Anne Benson

Poikkeustilanteet

Poikkeustilanteisiin varautuminen

Heittomekanismi:

Luokka1

Luokka2

Luokka3

throws

throws

try{}

catch {}

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

Anne Benson

Lukeminen ja kirjoittaminen

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

osion 4 viikon kolme materiaalista

top related