JAVA ALKALMAZÁSOK 5. ELŐADÁS 1/9/2017 1

Hasonló dokumentumok
Java programozási nyelv 10. rész Input/output kezelés

Programozási nyelvek Java

Reader /Writer InputStreamReader, OutputStreamWriter

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Java programozási nyelv

Abstract osztályok és interface-ek. 7-dik gyakorlat

TCP/IP kapcsolat Java nyelven

Programozási nyelvek Java

Pénzügyi algoritmusok

JAVA PROGRAMOZÁS 7.ELŐADÁS

Be- és kimenet kezelése

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

OOP: Java 8.Gy: Abstract osztályok, interfészek

Osztályok. 4. gyakorlat

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

13. Állományok, bejegyzések 14. Folyamok 15. Közvetlen hozzáférésű állomány. Programozási technológia (Java) - III. / 1

ELTE SAP Excellence Center Oktatóanyag 1

Programozási nyelvek II. JAVA

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

C++ programozási nyelv

A C programozási nyelv VI. Parancssori argumentumok File kezelés

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

1. Alapok. Programozás II

Java gyakorlat feladatai e s megolda sai ( )

Programozás alapjai 6. előadás. Wagner György Általános Informatikai Tanszék

Fájlok, stream-ek. Fájlok és könyvtárak Stream-ek csoportosítása A stream-ek osztályhierarchiája Stream-ek használata

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus változók. Dinamikus változók. Dinamikus változók. Dinamikus változók. 7.

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

3. Osztályok II. Programozás II

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Java Programozás 9. Ea: Java fájlkezelés. Sztrímtan

JAVA PROGRAMOZÁS 8.ELŐADÁS

Java programozási nyelv 5. rész Osztályok III.

Programozás I. 8. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Programozási nyelvek II.: JAVA

Input Output Műveletek

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Segédanyag: Java alkalmazások gyakorlat

Rendszerterv. Makoviczki András. Neptun: JJ26AR

Debreceni Egyetem Informatika Kar. Mobiltelefon programozás és mobil adatbázis-kezelés

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

Programozás II. 2. Dr. Iványi Péter

Programozási alapismeretek 4.

Java tutorial. Be- es kimenet kezelese. A legelsoprogram. Hogyan hasznaljunk fajlokat? Bemenet es kimenet absztrakciüja

Osztálytervezés és implementációs ajánlások

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Osztálytervezés és implementációs ajánlások

Már megismert fogalmak áttekintése

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Programozási nyelvek Java

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós május 6. Széchenyi István Egyetem, Gy r

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

Objektumorientált programozás C# nyelven

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Programozási Nyelvek: C++

Programozási technológia

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

Java Servlet technológia

JAVA PROGRAMOZÁS 2.ELŐADÁS

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Fejlett programozási nyelvek C++ Sablonok és adatfolyamok

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Osztályszintű elérés, kivételkezelés, fájlkezelés

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Bevezetés a Python programozási nyelvbe

Interfészek. PPT 2007/2008 tavasz.

Szövegek C++ -ban, a string osztály

Programozás II gyakorlat. 7. Példák a polimorfizmus alkalmazásaira

OOP #14 (referencia-elv)

SZOFTVERFEJLESZTÉS ANDROID PLATFORMRA. Dr. Iszály György Barna

Programozás módszertan p.1/46

Debreceni Egyetem Matematikai és Informatikai Intézet. 13. Védelem

Dokumentáció. 1. Beadandó feladat

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

Programozási technológia 2.

1. Egyszerű (primitív) típusok. 2. Referencia típusok

7. gyakorlat Sorozatok, Fájlkezelés

C++ programozási nyelv Konstruktorok-destruktorok

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

RESIDENT EVIL CODENAME: NIK

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Szoftvertechnolo gia gyakorlat

Feladat. Bemenő adatok. Bemenő adatfájlok elvárt formája. Berezvai Dániel 1. beadandó/4. feladat április 13. Például (bemenet/pelda.

Bánsághi Anna 2014 Bánsághi Anna 1 of 35

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Szöveges fájl kezelése (a Caesar-kód feltörése) A kód feltörésének statisztikai háttere

Listák, szótárak, fájlok Listák, szótárak, fájlok

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

ANDROID ALKALMAZÁSFEJLESZTÉS

Operációs Rendszerek II. Első verzió: 2009/2010. I. szemeszter Ez a verzió: 2009/2010. II. szemeszter

Programozás BMEKOKAA146. Dr. Bécsi Tamás 7. előadás

Átírás:

JAVA ALKALMAZÁSOK 5. ELŐADÁS 1/9/2017 1

TARTALOM Input/Output oadatfolyamok ofájlkezelés okonzol 1/9/2017 2

Input/Output, adatfolyamok 1/9/2017 3

INPUT/OUTPUT Szinte minden alkalmazás használ valamilyen külső adatot a feladati végrehajtásához. Ezek lehetnek fájlok a háttértárolón, adatok az adatbázisban, szervertől kapott adatfolyam (hang, videó), másik program, stb. Adatokat fogadhatunk (Input) és küldhetünk/írhatjuk (Output). A Java I/O típusaival (java.io csomag) ezek a műveleteket egyszerűen megvalósíthatóak. Habár az információ különböző helyen található, ezeket az adatfolyamok (stream) segítségével tudjuk majd kezelni. 1/9/2017 4

Fájlok és könyvtárak kezelése 1/9/2017 5

FILE OSZTÁLY A legtöbb osztály adatfolyamokat használ, viszont a File osztály ez alól kivétel, direkt módon fér hozzá a fájlokhoz és a fájlrendszerhez. A File osztályt a háttértáron található állományok információinak manipulálására használhatjuk. opéldául: jogosultságok, dátum és idő, elérési út, navigálás az alkönyvtárakban. Nevével ellentétben könyvtárakat is tudunk vele kezelni. 1/9/2017 6

FILE KONSTRUKTOROK Több konstruktorral is inicializálhatunk egy File objektumot. Magyarázat a példához: odirectorypath: a fájl elérési útja ofilename: fájl vagy alkönyvtár neve odirobj: egy File objektum, amely egy könyvtárt tárol ouriobj: URI objektum, amely leírja a fájlt 1/9/2017 7

PÉLDA Hozzunk létre három File objektumot f1, f2 és f3 néven. oelső: csak az elérési utat veszi át omásodik: elérési utat és a fájlnevet adjuk át oharmadik: első paramétere egy olyan File objektum, amely egy elérési utat tárolja, második pedig a fájl neve 1/9/2017 8

FILE METÓDUSAI A File több metódust is elérhetővé tesz. Ebből néhány fontosabb: ogetname(): fájl neve ogetparent(): tartalmazó könyvtár neve oexists(): igaz-hamissal tér vissza attól függően, hogy a megadott elérési úton található fájl létezik-e 1/9/2017 9

PÉLDA Kérdezzük le a Java könyvtár COPYRIGHT állományát (ez egy szöveges állomány, nincs kiterjesztése) Elérési út pl.: c:\program Files\Java\jre1.8.0_111\ COPYRIGHT 1/9/2017 10

PÉLDA 1/9/2017 11

PÉLDA Kimenet: 1/9/2017 12

ÁTNEVEZÉS, TÖRLÉS További hasznos függvények: oboolean renameto(file newname): a newname-ben megadott névre nevezi át az állományt. Ha sikerül igaz értékkel tér vissza. oboolean delete( ): fájl törölése, de üres könyvtárakat is törölhetünk vele. Siker esetén igazzal tér vissza. 1/9/2017 13

TOVÁBBI HASZNOS FÜGGVÉNYEK Metódus long getfreespace( ) Magyarázat A rendelkezésre álló tárhely byte-ban a File objektumot tartalmazó partíción. long gettotalspace( ) A File objektumot tartalmazó partíció teljes tárhelye byte-ban. long getusablespace( ) A File objektumot tartalmazó partíción lefoglalt tárhelye byte-ban. boolean ishidden( ) Rejtett-e a fájl/könyvtár. boolean setlastmodified(long millisec) boolean setreadonly( ) Utolsó módosítás dátumát változtatja meg. 1970. január elseje óta eltelt milliszekumdumok számát kell paraméterként megadni. A fájlt csak olvashatóvá teszi. 1/9/2017 14

KÖNYVTÁRAK A könyvtár Java-ban egy olyan File, amely további fájlokat vagy könyvtárakat tartalmaz. Ha egy olyan File objektumot hozunk létre, amely egy könyvtárt tárol az isdirectory() függvény hívása esetén igazat fogunk visszakapni. A list() függvény hatására a tartalmazott fájlokat és könyvtárakat kapjuk vissza (String tömbként). 1/9/2017 15

PÉLDA 1/9/2017 16

PÉLDA Kimenet: 1/9/2017 17

LIST() A list() által visszaadott adatok korlátozhatóak. Paraméterként átadhatunk neki egy olyan objektumot, amely megvalósítja a FilenameFilter interface-t. FilenameFilter interface-nek egyetlen metódusa van az accept. 1/9/2017 18

FILENAMEFILTER IMPLEMENTÁCIÓ ÉS HASZNÁLAT 1/9/2017 19

LISTFILES() Létezik a list()-nek egy alternatívája is a listfiles(), amely String tömb helyet File objektumok tömbjével tér vissza. Itt is használható a FilenameFilter implementáció a szűréshez. A FileFilter verzió hasonló az előzőhöz, viszont String helyett File típussal dolgozhatunk az interface accept() függvényében. 1/9/2017 20

KÖNYVTÁRAK LÉTREHOZÁSA Könyvtárak létrehozásához is kapunk függvényeket: omkdir(): létrehoz egy könyvtárat, amennyiben ez sikeres volt igaz értékkel tér vissza. Hamis értéknél előfordulhat, hogy a könyvtár már létezik vagy hiba van a megadott elérési útban. omkdirs(): létrehozza a könyvtárat akkor is ha a szülőkönyvtárak még nem léteznek. 1/9/2017 21

Adatfolyamok 1/9/2017 22

ADATFOLYMOK Olvasás és írás megvalósítása adatfolyammal (stream-mel). Általános modell az adatok feldolgozásához: a forrás és a cél különböző lehet, nem csak fájlokra kezelésére tudjuk használni. 1/9/2017 23

INTERFACE-EK A java.io (5-ös verziótól kezdve) két fontos interface-t tartalmaz: ocloseable oflushable Ezeket az interface-eket több Java I/O osztály implementálja. Feladatuk, hogy egységes használati módot definiáljanak az adatfolyamok lezárásához. 1/9/2017 24

INTERFACE-EK Closeable: oa close() metódus bezárja az adatfolyamot és felszabadítja az erőforrásokat. Flushable: oflush() metódusa a puffer-ben (vagy buffer) található kiírását kényszeríti ki az adott adatfolyamon. 1/9/2017 25

STREAM OSZTÁLYOK Java I/O absztrakt adatfolyam osztályai: oinputstream, OutputStream: bájtfolyamok kezelése oreader, Writer: karakterfolyamok kezelése Több leszármazott, konkrét típus tartozik hozzájuk, amelyek speciálisabb funkcionalitással rendelkeznek. opéldául String-ek olvasása fájlból. 1/9/2017 26

Byte adatfolyamok 1/9/2017 27

BYTE ADATFOLYAMOK Byte adatfolyam feladata a byte alapú bemenet/kimenet kezelése. Byte alapon bármilyen típusú objektumot tudunk kezelni, beleértve a bináris és karakter alapú adatot. Erre a feladatra két ősosztályt kaptunk: oinputstream: feladata a byte bement kezelése, implementálja a Closeable interface. Legtöbb metódusa ennek az osztálynak IOException-t dob hiba esetén. ooutputstream: byte kimenet kezelése. Closeable és Flushable interface-eket is implementálja. Legtöbb metódusa void és hiba esetén itt is IOException-t kapunk. 1/9/2017 28

INPUTSTREAM METÓDUSAI Metódus int available( ) void close( ) void mark(int numbytes) boolean marksupported( ) int read( ) int read(byte buffer[ ]) int read(byte buffer[ ], int offset, int numbytes) void reset( ) long skip(long numbytes) Magyarázat Az olvasásra elérhető bájtok számát adja vissza. Bemeneti adatfolyamot zárja le. Ha a lezárás után olvasni próbálunk IOException-t kapunk. A bementet kezelő mutató aktuális helyét megjelöli addig, amíg a numbytes számú bájtot be nem olvastunk. Igazzal tér vissza ha a mark() és reset() funkciók elérhetőek az adott adatfolyamon. Integer-ként kapjuk vissza a következő elérhető bájtot a bementről. Ha -1 et ad vissza akkor az adatfolyam (pl.: fájl) végére értünk/nincs több kiolvasható adat. buffer.length (buffer mérete) mennyiségű adatot olvas be a buffer byte tömbbe és visszatér a beolvasott bájtok számával. -1 visszatérési érték esetén nincs több kiolvasható adat. numbytes mennyiségű adatot olvas be a tömb buffer[offset] elemétől kezdődően. A bemenetet kezelő mutatót az előző jelölőre (mark) állítja vissza. numbytes számú bájtot átlép a bementről és visszatér a sikeresen átlépett bájtok számával. 1/9/2017 29

OUTPUTSTREAM METÓDUSAI Metódus void close( ) void flush( ) void write(int b) void write(byte buffer[ ]) void write(byte buffer[ ], int offset, int numbytes) Magyarázat Lezárja a kimeneti adatfolyamot. A lezárás követően IOException-t kapunk ha írni próbálunk. Véglegesíti a kimenetet és üríti minden a adatfolyamhoz csatolt buffer-t (bufferek tartalmát kiírja). Egy bájt (habár a paramétere egy int) elhelyezése/írása a kimeneti adatfolyamra. Paraméterként megadott byte tömb kiírása. numbytes mennyiségű byte kiírása a buffer-ből a buffer[offset]-től kezdődően. 1/9/2017 30

FILEINPUTSTREAM A FileInputStream az InputStream egy leszármazott osztálya. Az InputStream metódusait használja a fájlok byte-onkénti feldolgozásához. Két legfontosabb konstruktora van, amelyek FileNotFoundException-t dobnak, ha nem található a megadott fájl. 1/9/2017 31

FILEINPUTSTREAM A File-t paraméter váró konstruktor használata talán azért jobb, mert a File rendelkezik olyan függvényekkel, amellyel tudjuk ellenőrizni a fájl állapotát. Pl. ha nem is létezik akkor felesleges létrehozni a FileInputStream objektumot. A reset() és mark() függvények nincsenek a FileInputStream-nél felüldefiniálva, ezért ha használni próbáljuk őket IOException-t kapunk. 1/9/2017 32

1/9/2017 33

FILEOUTPUTSTREAM FileOutputStream osztályt fájlok byte alapú írására használhatjuk. OutputStream osztálytól örököl. Négy fontos konstruktora van ofullpath paraméter a teljes elérési utat vagy a fájl nevét kéri oappend igazra állításával a fájlt hozzáfűzésre nyitjuk meg Amennyiben nem létezik a megadott fájl a FileOutputStream létrehozza. Csak olvasható fájl esetén IOException-t kaptunk. 1/9/2017 34

PÉLDA 1/9/2017 35

BYTEARRAYINPUTSTREAM ByteArrayInputStream az InputStream egy másik leszármazottja, amely egy byte tömböt használ adatforrásként (ezt a tömböt tudjuk adatfolyamként használni). A konstruktoraiban a felhasznált byte tömböt tudjuk megadni, valamint ha nincs a teljes tömbre szükségünk melyik indextől (start) hány bájtot (numbytes) kezelünk. 1/9/2017 36

PÉLDA Példa a két konstruktor használatára: 1/9/2017 37

PÉLDA 1/9/2017 38

BYTEARRAYOUTPUTSTREAM ByteArrayOutputStream az OutputStream leszármazottja, kimenetnek egy byte tömböt használ. Üres konstruktor használatánál 32 byte-ot tartalmazó tömböt hoz létre A védett (protected) buf adattagjában tárolja a létrehozott byte tömböt. Ha szükséges automatikusan megnöveli a buffer méretét. 1/9/2017 39

PÉLDA 1/9/2017 40

SZŰRŐ ADATFOLYAMOK A java.io csomag tartalmazza az absztrakt osztályok speciális beállításainak lehetőségét, mellyel definiálhatunk, és részlegesen implementálhatunk szűrőket, olvasás, illetve írás céljából. Két fontos szűrő osztály: ofilterinputstream és FilterOutputStream Egy filter adatfolyam egy másik alap-adatfolyamra épül, melybe a write() metódus fog adatokat menteni, de csak a szűrés után. Vannak adatfolyamok, melyek speciális feladatokat látnak el, mint például a konvertálás vagy számlálás folyamata. 1/9/2017 41

SZŰRŐ ADATFOLYAMOK A legtöbb filter adatfolyamot a java.io csomag által szolgáltatott származtatott osztályok nyújtják, ezek a következők: odatainputstream, DataOutputStream obufferedinputstream, BufferedOutputStream olinenumberinputstream opushbackinputstream oprintstream 1/9/2017 42

BUFFERELT BYTE ADATFOLYAMOK Bufferelt byte adatfolyamok a szűrő adatfolyamok leszármazottja, memória buffert használ az adatfolyamok kezelésére. Lehetővé teszi, hogy több byte-tal dolgozzuk egy időben, amely teljesítménynövekedést tesz lehetővé. Továbbá a memóriában tárolt adatokkal különböző műveleteket végezhetünk mielőtt azokat pl. kiírnánk. Buffert használó osztályok: obufferedinputstream obufferedoutputstream opushbackinputstream 1/9/2017 43

BUFFEREDINPUTSTREAM A BufferedInputStream-et bármilyen InputStream típussal együtt használhatjuk (hozzácsatoljuk). Konstruktoraiban megadhatjuk az InputStream objektumunkat és akár a buffer méretét is. Az buffer optimális mérete függ az operációs rendszertől, az elérhető memória mennyiségétől és a konfigurációtól. Buffer mérete lehet pl.: 8192 byte 1/9/2017 44

BUFFEREDINPUTSTREAM A BufferedInputStream által burkolt adatfolyamban előre és hátra is mozoghatunk. read() és skip() metódusokat megvalósítja, ezen kívül a mark() és reset() implementálva van. A következő példában a mark() metódussal megjelöljük az aktuális pozíciót, majd később ide visszatérünk a reset() függvénnyel. oa program feladata a copyright szimbólumra hivatkozó szöveg ( ) megkeresése és annak helyettesítése a (c) szöveggel. 1/9/2017 45

PÉLDA 1/9/2017 46

BUFFEREDOUTPUTSTREAM ABufferedOutputStream egy OutputStream objektum burkoló osztálya, kiegészítve a flush() metódussal. Teljesítménynövekedés érhetünk el vele, mivel az írásnál a memóriában lévő adatokat módosítjuk, a célobjektumba való kiírást a flush() metódussal tudjuk elérni. Konstruktorai: 1/9/2017 47

EGYÉB BYTE ADATFOLYAMOK PushbackInputStream SequenceInputStream PrintStream DataOutputStream, DataInputStream RandomAccessFile 1/9/2017 48

OSZTÁLY HIERARCHIA 1/9/2017 49

Karakter adatfolyamok 1/9/2017 50

KARAKTER ADATFOLYAMOK A byte adatfolyamot kezelő osztályok funkcionalitása habár elegendő a stream-ek kezelésére, unicode karakterekkel közvetlen módon nem tudunk dolgozni. A Java erre a problémára is nyújt megoldást. Ehhez két absztrakt osztály kapunk, amelyek a hierarchia csúcsán helyezkednek el: oreader: karakter bemenet kezelése, implementálja a Closeable és Readable interface-eket. owriter: karakter kimenet kezelése, implementálja a Closeable, Flushable, Appendable interface-eket. Hiba esetén minden metódusuk IOException-t dob (kivéve a Reader marksupported() függvényét) 1/9/2017 51

READER FÜGGVÉNYEK Metódus abstract void close( ) void mark(int numchars) boolean marksupported( ) int read( ) int read(char buffer[ ]) abstract int read(char buffer[ ], int offset, int numchars) boolean ready( ) void reset( ) Magyarázat Adatfolyam lezárása. Lezárás után az olvasási művelet IOException-t fog adni. Jelenlegi pozíció megjelölése, amely a numchars-ban meghatározott karaktermennyiségig érvényes. Igazzal tér vissza, ha a mark( )/reset( ) függvények támogatva vannak. Kiolvassa a következő elérhető karaktert. -1 visszatérési érték esetén nincs több. buffer.length mennyiségű adatot olvas ki a buffer tömbbe. Visszatérési értéke a sikeresen beolvasott karakterek száma, -1 ha nincs több adat. numchars darab karakter beolvasása a buffer-be buffer[offset] pozíciótól. Visszatérési értéke a sikeresen beolvasott karakterek száma, -1 ha nincs több adat. Igazzal tér vissza, ha a következő beolvasásra nem kell várni. Visszaállítja az előző jelölőre a bemeneti olvasásához használt mutatót. long skip(long numchars) numchars mennyiségű karaktert lép át az adatfolyamból. 1/9/2017 52

WRITER FÜGGVÉNYEK Metódus Writer append(char ch) Writer append(charsequence chars) Writer append(charsequence chars, int begin, int end) abstract void close( ) abstract void flush( ) void write(int ch) void write(char buffer[ ]) abstract void write(char buffer[ ], int offset, int numchars) void write(string str) Magyarázat Adatfolyam végéhez hozzáad egy karaktert és visszaadja az adatfolyam referenciáját. Több karakter hozzáadása az adatfolyamhoz. Karakterek hozzáadása az adatfolyamhoz a begin-től az end-1 index-ig. Adatfolyam lezárása. Lezárás után az írási művelet IOException-t fog adni. Kiírja a buffer-ben található adatokat és véglegesíti az adatfolyam állapotát. Egy karakter kiírása (habár a paramétere int típusú). Karakter tömb kiírása. Karakter tömbből numchars elemet írunk ki a buffer[offset]-től kezdődően. String kiírása az adatfolyamra. void write(string str, int offset, int numchars) numchars mennyiségű karkater kiírása az offset-től kiindulva. 1/9/2017 53

FILEREADER A FileReader-t fájlok karakter alapú olvasására használhatjuk. Reader osztálytól örököl. Két fontos konstruktora van, amelyek hiba esetén FileNotFoundException-t dobnak. 1/9/2017 54

FILEWRITER Fájlok karakter alapú írására használjuk a FileWriter-t, Writer osztály leszármazottja. Négy fontosabb konstruktora van. Hiba esetén mindegyik IOException-t dob. 1/9/2017 55

PÉLDA 1/9/2017 56

CHARARRAYREADER CharArrayReader: Reader osztály egy leszármazottja, bemeneteként egy karakter tömb szolgál. 1/9/2017 57

PÉLDA 1/9/2017 58

CHARARRAYWRITER CharArrayWriter a Writer egy leszármazottja. Karakter adatfolyam írására használhatjuk, amely egy byte tömböt kezel. Konstruktorai: 1/9/2017 59

PÉLDA 1/9/2017 60

BUFFEREDREADER Reader leszármazottja, buffer-rel látja el a bemenetet. Az adatfolyamon előre és hátra is mozoghatunk. Támogatja a mark() és reset() funkciókat. Konstruktorai: 1/9/2017 61

PÉLDA 1/9/2017 62

PÉLDA Egy sor beolvasása konzolról: 1/9/2017 63

BUFFEREDWRITER BufferedWriter a Writer egy leszármazottja, amely buffer-t használ a kimeneti adatfolyam kezelésére. 1/9/2017 64

EGYÉB KARAKTER ADATFOLYAMOK PushbackReader StringReader, StringWriter PrintWriter 1/9/2017 65

OSZTÁLY HIERARCHIA 1/9/2017 66

CONSOLE OSZTÁLY Java 6-tól létezik egy Console osztály is, amely a konzolról való olvasást és írást valósítja meg. Kényelmi szempontból jelent meg, viszont a legtöbb funkcionalitását a System.in és System.out már tudja. Megvalósítja a Flushable interface-t. Nincs konstruktora csak a statikus console() függvénye, amellyel megkapjuk az aktuális Console objektumot. Ha nem elérhető a konzol akkor null-t kapunk vissza. A leggyakrabban használt függvénye: oreadline() oreadpassword() 1/9/2017 67

PÉLDA 1/9/2017 68

IRODALOMJEGYZÉK Nagy Gusztáv: Java programozás v1.3, Creative Commons, Kecskemét,2007. (178-185) Herbert Schildt: Java - The Complete Reference, Secenth Edition, 2007. (555-599) 1/9/2017 69