Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

Samankaltaiset tiedostot
Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

8. Näppäimistöltä lukeminen 8.1

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

14. Poikkeukset 14.1

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely

14. Poikkeukset 14.1

12. Näppäimistöltä lukeminen 12.1

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

8. Näppäimistöltä lukeminen 8.1

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

Ohjelmoinnin perusteet Y Python

Metodien tekeminen Javalla

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

Ohjelmoinnin perusteet Y Python

17. Javan omat luokat 17.1

Tietokannat II -kurssin harjoitustyö

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

16. Javan omat luokat 16.1

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Luokat ja oliot. Ville Sundberg

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Mikä yhteyssuhde on?

Java-kielen perusteita

Ohjelmoinnin perusteet Y Python

Osio 4: Tietovirrat. Properties- eli ominaisuustiedostot Logger: lokitietojen käsittely

7. Näytölle tulostaminen 7.1

20. Javan omat luokat 20.1

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Sisältö. 22. Taulukot. Yleistä. Yleistä

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

Pakkauksen kokoaminen

Sisältö. 2. Taulukot. Yleistä. Yleistä

Ohjelmointi 2 / 2010 Välikoe / 26.3

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

OutputStream ja InputStream. Tietovirrat ja niiden suunnat. Tietovirtojen käyttö. FileInputStream esimerkki. DataOutputStream ja DataInputStream

Poikkeustenkäsittely

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

5. HelloWorld-ohjelma 5.1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Java-kielen perusteet

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Ohjelmointityö 65 Tekstinmuotoilu ohjelma. Dokumentaatio. Aki Heikkinen (155394)

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

1 Tehtävän kuvaus ja analysointi

Olio-ohjelmointi Javalla

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Standardi- ja tietorakenneluokkia

Ohjelmoinnin perusteet Y Python

Mitä poikkeuskäsittely tarkoittaa?

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Metodit Arvotyyppi. Metodit Arvotyyppi. Metodit Parametrit. Metodit Parametrit. Metodit Kuormittaminen. Metodit Kuormittaminen. Javan perusteet

17. Javan omat luokat 17.1

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

Olio-ohjelmointi Virhetilanteiden käsittely

Ohjelmointityö 3. Mikko Laamanen

Harjoitus 5 (viikko 48)

Sarjallistaminen. Juha Järvensivu 2007

1. Omat operaatiot 1.1

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

4. Luokan testaus ja käyttö olion kautta 4.1

Taulukoiden käsittely Javalla

Java-API, rajapinnat, poikkeukset, UML,...

Ohjelmoinnin jatkokurssi, kurssikoe

Pakkauksen kokoaminen

9. Periytyminen Javassa 9.1

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Ohjelmoinnin perusteet, syksy 2006

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

9. Periytyminen Javassa 9.1

Rajapinta (interface)

5. HelloWorld-ohjelma 5.1

Listarakenne (ArrayList-luokka)

public static void main (String [] args)

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).

11. Javan valintarakenteet 11.1

Rinnakkaisohjelmointi, Syksy 2006

Ohjelmointi 2, välikoe

Java ja grafiikka. Ville Sundberg

Ohjelmoinnin perusteet Y Python

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

7. Oliot ja viitteet 7.1

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Ohjelmoinnin perusteet, kurssikoe

Ohjelmoinnin perusteet Y Python

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmoinnin perusteet Y Python

Harjoitus 4 (viikko 47)

11. Javan valintarakenteet 11.1

Transkriptio:

6. Tiedostot 6.1

Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

Johdanto Tiedostoja on käsitelty uudelleenohjattujen standardisyöte- ja tulostusvirtojen avulla. Tiedostoja voidaan käyttää myös ohjelmasta käsin. Tutustutaan tekstitiedostojen lukemiseen ja kirjoittamiseen java.io-pakkauksen luokkien avulla. Javan versiosta 1.5 alkaen käytettävissä myös java.utilpakkauksen Scanner- ja Formatter-luokat. import java.io.*; (tai import java.util.*;). Lukeminen ja kirjoittaminen tapahtuu vaiheittain: avataan, luetaan tai kirjoitetaan, suljetaan. 6.3

Avaaminen lukemista varten Tiedoston avaaminen tarkoittaa yleisesti syötevirran liittämistä tiedostosta ohjelmaan. Javassa syötevirta avataan esimerkiksi luomalla FileInputStream-luokan olio. Yleisesti: FileInputStream olionnimi = new FileInputStream(tiedostonNimi); Esimerkiksi: FileInputStream syotevirrannimi = new FileInputStream( in.txt ); 6.4

Lukeminen Syötevirrasta lukemiseen tarvitaan olio InputStreamReader-luokasta. Esimerkiksi: InputStreamReader lukijannimi = new InputStreamReader(syotevirranNimi); Usein on kätevämpää käyttää hienostuneempaa lukijaa. Tällaisen tarjoaa BufferedReader-luokka. Esimerkiksi: BufferedReader puskuroitulukija = new BufferedReader(lukijanNimi); 6.5

Lukeminen Kun syötevirtaan on saatu liitettyä BufferedReaderlukija, voidaan tekstitiedostoa lukea riveittäin readline-operaation avulla. Ready-operaatio kertoo voidaanko lukea uusi rivi. Esimerkiksi: while (puskuroitulukija.ready()) { String rivi = puskuroitulukija.readline(); System.out.println(rivi); 6.6

Rivien käsittely Usein yhdellä rivillä on useampia jollakin merkillä (esimerkiksi pilkku tai välilyönti) erotettuja tietoja, jotka voivat vieläpä olla eri tyyppisiä. String-luokan split-operaatio on tässä tilanteessa hyödyllinen se pilkkoo rivi osiinsa. Esimerkiksi: String rivi = "this is a test"; String[] osat = rivi.split("[ ]"); for (int i = 0; i < osat.length; i++) System.out.println(osat[i]); 6.7

Sulkeminen lukemisen jälkeen Tiedoston lukemisen jälkeen siihen liitetty syötevirta suljetaan close-operaatiolla. Esimerkiksi: puskuroitulukija.close(); Tiedoston avaamisen, lukemisen ja/tai sulkemisen yhteydessä voi tapahtua poikkeus. Tämän vuoksi Java pakottaa sulkemaan useimmat tiedostonkäsittelyyn liittyvät lauseet try-catchlauseen sisään. 6.8

Esimerkki import java.io.*; while (puskuroitulukija.ready()) { public class Lukeminen1 { String rivi = puskuroitulukija.readline(); public static void main(string[] args) { System.out.println(rivi); String TIEDNIMI = "in.txt"; try { puskuroitulukija.close(); FileInputStream syotevirta = new FileInputStream(TIEDNIMI); catch (FileNotFoundException e) { InputStreamReader lukija = System.out.print("Tiedosto hukassa!"); new InputStreamReader(syotevirta); BufferedReader puskuroitulukija = catch (Exception e) { new BufferedReader(lukija); System.out.print("Lukuvirhe!"); 6.9

Esimerkki import java.io.*; import java.util.*; public class Lukeminen2 { public static void main(string[] args) { String TIEDNIMI = "in.txt"; try { // Luodaan tiedosto-olio. File tiedosto = new File(TIEDNIMI); // Luodaan lukija. Scanner lukija = new Scanner(tiedosto); // Luetaan ja tulostetaan rivit. while (lukija.hasnextline()) { String rivi = lukija.nextline(); System.out.println(rivi); // Suljetaan lukija. lukija.close(); catch (FileNotFoundException e) { System.out.print("Tiedosto hukassa!"); catch (Exception e) { System.out.print("Lukuvirhe!"); 6.10

Avaaminen kirjoittamista varten 1) Luodaan tiedosto-olio File-luokasta: File tiedostoolionnimi = new File(tiedostonNimi); 2) Liitetään tulostusvirta ohjelmasta tiedostoon: FileOutputStream virtaolionnimi = new FileOutputStream(tiedostoOlionNimi); 6.11

Kirjoittaminen Tulostusvirtaan kirjoittamiseen tarvitaan kirjoittajaolio PrintWriter-luokasta. Yleisesti: PrintWriter kirjoittajaolionnimi = new PrintWriter(virtaOlionNimi, true); Kirjoittaminen tapahtuu PrintWriter-luokan print- ja println-operaatioiden avulla. Nämä operaatiot on kuormitettu kuten System.outattribuutin kautta kutsuttavat operaatiot, jotka tulostavat esimerkiksi lukuja ja merkkijonoja. 6.12

Sulkeminen kirjoittamisen jälkeen Tiedoston kirjoittamisen jälkeen siihen liitetty syötevirta suljetaan kirjoittajan close-operaatiolla. Myös kirjoittamisen yhteydessä voi tapahtua poikkeus: tarvitaan poikkeuksen käsittelyä trycatch-lauseen avulla. 6.13

Tiedostot: esimerkki import java.io.*; public class Kirjoittaminen { public static void main(string [] args) { final String TIEDNIMI = "out.txt"; final int HEIPPALKM = 10; try { // Luodaan tiedosto-olio File tiedosto = new File(TIEDNIMI); // Luodaan tulostusvirta ja // liitetään se tiedostoon FileOutputStream tulostusvirta = new FileOutputStream(tiedosto); // Luodaan virtaan kirjoittaja PrintWriter kirjoittaja = new PrintWriter(tulostusvirta, true); // Kirjoitetaan tiedostoon for (int i = 0; i < HEIPPALKM; i++) kirjoittaja.println("heippa " + i); // Suljetaan tiedosto kirjoittaja.close(); catch (IOException e) { System.out.println(e); 6.14