280 likes | 393 Views
Mistä ne tulevat?. Tietovirrat ja tiedostot. Kuinka niitä käsitellään. Minne ne menevät?. pienin tietoyksikkö bitti kaksi tilaa: nolla (sähkövirtaa ei ole) yksi (sähkövirtaa kulkee) 8 bittiä muodostavat tavun eli merkin
E N D
Mistä ne tulevat? Tietovirrat ja tiedostot Kuinka niitä käsitellään Minne ne menevät?
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) Tiedon koodaus it-järjestelmissä Anne Benson
Internetissä ei 8-bittinen järjestelmä riitä. Syy: kaikkialla maailmassa toimiva järjestelmä, lukemattomia kansallisia merkistöjä Internetin myötä käyttöön UNICODE, kahteen tavuun eli 16 bittiin perustuva järjestelmä (kehitys alkoi aiemmin 80-luvulla) UTF-8 käytetyimpiä Tiedon koodaus it-järjestelmissä Lisää tietoa esimerkiksi mainioista linkeistä - http://www.saunalahti.fi/wpoet/fin/char.html - http://fi.wikipedia.org/wiki/Merkist%C3%B6standardi (huomaa ”rikkoutuneet ö ja väliviiva) Anne Benson
Tavut muodostavat tiedon: Javan alkeismuuttujat (fyysinen organisointi) int 4 tavua double 8 tavua pituus aina 11 merkkiä Loogisia, käyttäjän tietoja auton rekisteritunnus (String) AAa – Nnn vähintään kaksi kirjainta ja yksi numero henkilötunnus ppkkvvA/+/-nnnD, Tavuista tieto eli kenttä Anne Benson
Esimerkiksi nide tositteen tiedot kuorma-auton tiedot opiskelijan tiedot Kentistä tietokokonaisuuksia(tietueita) Anne Benson
Esimerkiksi asiakkaat tuotteet tilaukset opiskelijat Tietueista tiedostoja ja tietokantoja Anne Benson
Java ja tietovirrat • -standarditietovirrat • merkkivirrat • poikkeustilanteisiin varautuminen
Tietovirrat IPO InputProcessOutput Käsittely Process Syöttö Input Tulostus Output • näppäimistö • viivakoodi • toinen prosessi • verkon yli • tiedosto • tietokanta • jne • näyttö • kirjoitin • toinen prosessi • verkkoon • tiedosto • tietokanta • jne Tietovarastot
Javan tietovirrat Fyysisiä laitteita Minne käsitelty tieto kirjoitetaan? Mistä tieto luetaan? Miten tieto käsitellään?
Javan tietovirrat : java.io – pakkaus Tiedon kaksi esitystapaa • Pienin tiedon talletusyksikkö • Tavu, muodostuu kahdeksasta bitistä: mikä tahansa tieto InputStreamOutputStream • Merkki, muodostuu kahdesta tavusta (16 bittiä): tekstimuotoinen tieto Reader Writer
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
Tiedon lukeminen näppäimistöltä • Merkkivirtaa luetaan näppäimistöltä • Määrittele tiedon lähde • BufferedReader in = new BufferedReader (new InputStreamReader()); Talletetaan merkkivirtaa , enter lopettaa Väliaikainen talletuspaikka syöttöpuskuri: BufferedReader Java.lang-pakkauksen System.in: lähettää tavuvirtaa
Javan tietovirrat Näppäimistöltä tuleva merkkivirta System.in InputStream InputStreamReader BufferedReader
Javan tietovirrat Näppäimistöltä tuleva merkkivirta Mihin tieto talletetaan: Puskuri varataan lukemista varten BufferedReader in = new BufferedReader (new InputStreamReader(System.in)); Mistä tieto saadaan: näppäimistöltä Missä muodossa tieto saadaan? Luetaan tavuja, koodataan merkeiksi mistä tieto hankitaan – minne tieto talletetaan
Javan tietovirrat • Tietovirran määrittely • miten sovellus käsittelee tietoa • missä muodossa tieto luetaan/kirjoitetaan • mikä on tiedon fyysinen lähde/kohde
Javan tietovirrat Näppäimistövirran lukeminen Näppäimistö: BufferedReader syotto = new BufferedReader (new InputStreamReader(System.in)); Lukeminen: vastaus = syotto.readLine();
Javan tietovirrat Tulostaminen näytölle • Tulostaminen näytölle • System.out.print – kirjoittaa riville, kirjoituksen jatkokohta jää samalle riville • 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
Javan tietovirrat Tekstimuotoisen tiedoston käsittely • Kirjoitetaan tiedosto • Luetaan tiedoston sisältö ja tulostetaan näytölle • Muistetaan varautua virhetilanteisiin
Tekstitiedoston lukeminen Tiedoston määrittäminen: BufferedReader luettava = new BufferedReader(new FileReader(tdstoNimi)); Lukeminen: String rivi; while ((rivi = luettava.readLine()) != null) System.out.println(rivi); luettava.close();
Poikkeustilanteet Entä jos levy on täynnä ja tiedostoa ei voi kirjoittaa? Tiedosto on toisentyyppinen kuin odotimme
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
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()); }
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()); }
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
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
Poikkeustilanteet Poikkeustilanteisiin varautuminen Heittomekanismi: Luokka1 throws Luokka2 throws try{} catch {} Luokka3
Lukeminen ja kirjoittaminen • Tärkeitä pakkauksia ja luokkia • java.io.* • sisältää tietovirtojen käsittelyn rajapinnat, luokat ja poikkeukset • java.util • StringTokenizer • java.lang.StringBuffer • merkkijonon käsittely dynaamisesti
Lukeminen ja kirjoittaminen Näppäimistövirran ja tekstitiedoston käsittelyn esimerkit löytyvät osion 4 viikon yksi materiaalista