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

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

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

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

14. Poikkeukset 14.1

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

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

14. Poikkeukset 14.1

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

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

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

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

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

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

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

Ohjelmoinnin perusteet Y Python

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

Metodien tekeminen Javalla

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

Ohjelmoinnin perusteet Y Python

Mikä yhteyssuhde on?

Luokat ja oliot. Ville Sundberg

Ohjelmoinnin perusteet Y Python

Java-kielen perusteita

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

16. Javan omat luokat 16.1

Tietokannat II -kurssin harjoitustyö

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

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Ohjelmointi 2 / 2010 Välikoe / 26.3

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

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

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

20. Javan omat luokat 20.1

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

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

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

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

17. Javan omat luokat 17.1

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

Pakkauksen kokoaminen

Olio-ohjelmointi Javalla

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

Ohjelmoinnin perusteet Y Python

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

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

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

7. Näytölle tulostaminen 7.1

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

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

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

Poikkeustenkäsittely

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

1 Tehtävän kuvaus ja analysointi

Java-kielen perusteet

Mitä poikkeuskäsittely tarkoittaa?

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

Ohjelmoinnin jatkokurssi, kurssikoe

Ohjelmointityö 3. Mikko Laamanen

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

9. Periytyminen Javassa 9.1

Sarjallistaminen. Juha Järvensivu 2007

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

Olio-ohjelmointi Virhetilanteiden käsittely

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

Ohjelmoinnin perusteet, syksy 2006

9. Periytyminen Javassa 9.1

5. HelloWorld-ohjelma 5.1

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

public static void main (String [] args)

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

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

Listarakenne (ArrayList-luokka)

Harjoitus 5 (viikko 48)

Taulukoiden käsittely Javalla

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

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

1. Omat operaatiot 1.1

Pakkauksen kokoaminen

Java ja grafiikka. Ville Sundberg

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Ohjelmointi 2, välikoe

Rajapinta (interface)

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

17. Javan omat luokat 17.1

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

Ohjelmoinnin perusteet Y Python

11. Javan valintarakenteet 11.1

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ä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

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

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

7. Oliot ja viitteet 7.1

Metodien tekeminen Javalla

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

Liite 1. Projektin tulokset (Semaforit Javassa) Jukka Hyvärinen Aleksanteri Aaltonen

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

Transkriptio:

26. Tiedostot 26.1

Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.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. 26.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); Esim. FileInputStream syotevirrannimi = new FileInputStream( in.txt ); 26.4

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

Lukeminen Kun syötevirtaan on saatu liitettyä BufferedReaderlukija, voidaan tekstitiedostoa lukea riveittäin readline-metodin avulla. ready-metodi kertoo voidaanko lukea vielä uusi rivi. Esim. while (puskuroitulukija.ready()) { String rivi = puskuroitulukija.readline(); System.out.println(rivi); 26.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-metodi on tässä tilanteessa hyödyllinen se pilkkoo rivi osiinsa. Esim. String rivi = "this is a test"; String[] osat = rivi.split("[ ]"); for (int i = 0; i < osat.length; i++) System.out.println(osat[i]); 26.7

Sulkeminen lukemisen jälkeen Tiedoston lukemisen jälkeen siihen liitetty syötevirta suljetaan close-metodilla. Esim. 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. 26.8

Esimerkki import java.io.*; while (puskuroitulukija.ready()) { public class Lukeminen { 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 (IOException e) { new BufferedReader(lukija); System.out.print("Lukuvirhe!"); 26.9

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

Kirjoittaminen Tulostusvirtaan kirjoittamiseen tarvitaan kirjoittajaolio PrintWriter-luokasta. Yleisesti: PrintWriter kirjoittajaolionnimi = new PrintWriter(virtaOlionNimi, true); Kirjoittaminen tapahtuu PrintWriter-luokan print- ja println-metodien avulla. Nämä metodit on kuormitettu kuten System.outattribuutin vastaavat metodit: metodit tulostavat esimerkiksi lukuja ja merkkijonoja. 26.11

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

Tiedostot: esimerkki import java.io.*; public class Kirjoittaminen { public static void main(string [] args) { final String TIEDNIMI = "out.txt"; final int N = 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 < N; i++) kirjoittaja.println("heippa " + i); // Suljetaan tiedosto kirjoittaja.close(); catch (IOException e) { System.out.println(e); 26.13