mistä ne tulevat?
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 PresentationTRANSCRIPT
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