1 / 21

DataOutputStream ja DataInputStream

DataOutputStream ja DataInputStream. DataOutputStream:lla voidaan tallentaa perustietotyyppien arvoja binäärimuotoiseen tiedostoon DataInputStream:lla voidaan lukea DataOutputStream:lla tallennettua binääritiedostoa

zia
Télécharger la présentation

DataOutputStream ja DataInputStream

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. DataOutputStream ja DataInputStream • DataOutputStream:lla voidaan tallentaa perustietotyyppien arvoja binäärimuotoiseen tiedostoon • DataInputStream:lla voidaan lukea DataOutputStream:lla tallennettua binääritiedostoa • Java ei tarkasta luettavan tiedon järkevyyttä, joten käyttäjän on tiedettävä tarkasti mitä tietotyyppejä ja missä järjestyksessä tiedostoon on tallennettu

  2. DataOutputStream - tallennus try { File file = new File(fileName); FileOutputStream outStream = new FileOutputStream(file); DataOutputStream dataStream = new DataOutputStream( outStream); dataStream.writeInt( 2 ); dataStream.writeBoolean( false ); dataStream.writeDouble( 9.8 ); dataStream.flush(); dataStream.close(); } catch (IOException e) { System.out.println("ERROR: " + e); }

  3. DataInputStream - luku try { File file = new File(fileName); FileInputStream inStream = new FileInputStream(file); DataInputStream dataStream = new DataInputStream( inStream); int i = dataStream.readInt(); boolean b = dataStream.readBoolean(); double d = dataStream.readDouble(); System.out.println("Luettu:\n" + "int i == " + i + "\n” + "boolean b == " + b + "\n" + "double d == " + d); dataStream.close(); } catch (IOException e) { System.out.println("ERROR: " + e); }

  4. PrintWriter ja BufferedReader • PrintWriter-luokalla voidaan tallentaa tekstiä tietovirtaa apunakäyttäen tekstitiedostoon • Tekstitiedostoa voidaan lukea tietovirrasta BufferedReader-luokalla

  5. Tekstitiedoton tallentaminen - PrintWriter try { File file = new File(fileName); FileOutputStream outStream = new FileOutputStream(file); PrintWriter printWriter = new PrintWriter(outStream); printWriter.println("Tässä yksi rivi."); printWriter.print("Tässä rivi ilman rivinvaihtoa."); printWriter.println("Tässä rivinvaihdon kanssa."); printWriter.flush(); printWriter.close(); } catch (IOException e) { System.out.println("ERROR: " + e); }

  6. Tekstitiedoton lukeminen - BufferedReader try { File file = new File(fileName); FileInputStream inStream = new FileInputStream(file); InputStreamReader isReader = new InputStreamReader(inStream); BufferedReader buffReader = new BufferedReader(isReader); String readedLine; int lineNum = 0; while ((readedLine = buffReader.readLine()) != null) { System.out.println("Rivi " + (++lineNum) + ":" + readedLine); } buffReader.close(); } catch (IOException e) { System.out.println("ERROR: " + e); }

  7. Olioiden tallentaminen • Java osaa tallentaa olion tilan binäärimuodossa ObjectOutputStream-luokan avulla • Mikä tahansa omatekoisen luokan olio voidaan tallentaa, kun se toteuttaa (implements) Serializable-rajapinnan (interface):public class MyClass implements Serializable { ... }

  8. Olioiden tallentaminen – Student.java import java.io.*; public class Student implements Serializable { private int m_studentNumber; private String m_name; public Student(int studentNumber, String name) { m_studentNumber = studentNumber; m_name = name; } public String toString() { return "Student:\n Number: " + m_studentNumber + "\n" + " Name: " + m_name; } }

  9. Olioiden tallentaminen – ObjectOutputStream try { File file = new File(fileName); FileOutputStream outStream = new FileOutputStream(file); ObjectOutputStream objStream = new ObjectOutputStream(outStream); objStream.writeObject(new Student(11, "Matti")); objStream.writeObject(new Student(34, "Tuukka")); objStream.writeObject(new Student(99, "Teppo")); objStream.flush(); objStream.close(); } catch (IOException e) { System.out.println("ERROR: " + e); }

  10. Olioiden lukeminen – ObjectInputStream try { File file = new File(fileName); FileInputStream inStream = new FileInputStream(file); ObjectInputStream objInput = new ObjectInputStream(inStream); Student student1 = (Student) objInput.readObject(); Student student2 = (Student) objInput.readObject(); Student student3 = (Student) objInput.readObject(); System.out.println("1:" + student1 + "\n" + "2:" + student2 + "\n" + "3:" + student3); objInput.close(); } catch (IOException e) { System.out.println("ERROR: " + e); } catch (ClassNotFoundException e) { System.out.println("ClassNotFnd: " + e); }

  11. Työskentely ilman BlueJ-ympäristöä main-metodin käyttö suoritus komentoriviltä parametrien antaminen

  12. main-metodi • Mikäli Java-ohjelmia halutaan suorittaa komentoriviltä, tulee ajettavaan lähdekooditiedostoon luoda main-metodi: • main-metodissa luodaan tarvittava(t) olio(t) • Komentoriviparametrit tulevat main-metodin parametrina olevaan taulukkoon public static void main(String[] args) { // Käytettävien olioiden luonti }

  13. main-metodi - esimerkki public class TestApp { public TestApp(String name) { System.out.println("Hello " + name + "!"); } public static void main(String[] args) { if (args.length==0) System.out.println("Usage:\njava TestApp text"); else { TestApp newApp = new TestApp(args[0]); } } }

  14. Koodin kääntäminen komentoriviltä • Ennen kääntämistä ja ohjelman suorittamista tulee tarkastaa että CLASSPATH-ympäristömuuttujassa on määritettynä sopiva luokkien hakupolku • CLASSPATH-muuttujaan tulee lisätä aLibrary:n polku, jos käytetään aLibrary-kirjastoa • Windowsissa:set – näyttää nykyiset ympäristömuuttujatset CLASSPATH=”.;c:\java2002;c:\bluej\lib” – asettaa uuden

  15. Koodin kääntäminen ja ajaminen • Yksittäisen MyClass.java-tiedoston kääntäminen onnistuu:javac MyClass.java • Käännöksen jälkeen ajaminen:java MyClass • Ajamisen yhteydessä voidaan välittää komentoriviparametreja:java MyClass parametri1 parameteri2 ...

  16. JavaDoc ohjelmakoodin dokumentoinnin apuväline

  17. JavaDoc • Ohjelmakoodiin voi sijoittaa kommentteja, joista JavaDoc osaa tehdä html-muotoisen dokumentaation • Dokumentaatio on ulkoasultaan ja toiminnallisuudeltaan samanlainen kuin Javan oman API:n dokumentaatio • Kommenteissa pitää käyttää ns. tageja joita JavaDoc ymmärtää

  18. JavaDoc • Kommentti sijoitetaan ennen luokkaa, metodia tai attribuuttia:/** * Tämä luokka arpoo lottorivin */ • Kommentin sisällä voi olla @-merkillä alkavia tageja

  19. JavaDoc-tagit • @author Tekijä • @version Versionumero • @param parametrin_nimi Kuvaus • @return Kuvaus paluuarvosta Kommenteissa voi käyttää halutessaan HTML-koodia.

  20. JavaDoc -käyttö • HTML-dokumentaatio saadaan komennollajavadoc lähdetiedosto.java • JavaDoc:ia voi pyytää tekemään myös useasta tiedostosta dokumentaation:javadoc *.java • Komentoriviparametreilla voidaan vaikuttaa dokumentaation tyyliin • -private komentoriviparametri dokumentoi myös private ja protected-näkyvyysalueilla esitellyt metodit ja attribuutit

  21. JavaDoc - esimerkki /** * Malliluokka, jossa esitellään JavaDoc:n toimintaa * @version 1.0 * @author Matti Meikäläinen */ public class TestApp { /** * Malli luokkamuuttujasta */ private int m_memberVariable; /** * Mallimetodi * @param name Otettava parametri * @return Merkkijono jonka metodi palauttaa public String pestMethod(String name) { /* … */ } }

More Related