Java programozási nyelv Filekezelés
Jogi rendelkezések A következőket teheted a művel: szabadon másolhatod, terjesztheted, bemutathatod és előadhatod a művet származékos műveket (feldolgozásokat) hozhatsz létre Az alábbi feltételekkel: Jelöld meg!. A szerző vagy a jogosult által meghatározott módon kell megjelölni a művet: Szerző és eredeti elérhetőség Ne add el!. Ezt a művet nem használhatod fel kereskedelmi célokra. Nevezd meg! - Ne add el! 2.5 Magyarország További információ a képre kattinva
Java I/O működése (stream) Program File File Forrás Cél Billentyűzet Egyéb egyéb
I/O típusok Karakteres Bináris UNICODE karakterek (16 bit) Reader Writer Szöveges állományok feldolgozásához is ezt használhatjuk Bináris Byteokat kezel InputStrem OutputStrem Bináris adatállományok feldolgozása
Fileok kezelése Az állomány is stream Műveletek: File megnyitása Műveletek File lezárása A különböző osztályok különböző módon kezelik az állomány végét!!!
Karakteres állományok kezelése Kell a java.io Bemenethez használjuk a FileReader Kimenethez használjuk a FileWriter osztályt FileReader bemenet =new FileReader(˝feldolgozando.txt˝); … bemenet.close(); FileWriter kimenet=new FileWriter(˝irasra.txt˝); kimenet.close();
Karakteres file olvasása import java.io.*; public class kepremasol{ public static void main(String [] args) { try{ FileReader bemenet = new FileReader(“vers.txt”); while(true) { int c = bemenet.read(); if (c == -1) break; System.out.write((char)c); } bemenet.close(); } catch (IOException e){System.out.print(e);}
Karakteres file írása import java.io.*; public class filebaszoveg{ public static void main(String [] args) { String szöveg=˝Terepszín kabátka˝; try{ FileWriter kimenet = new FileWriter(˝mentes.txt˝); for ( int i = 0 ; i < szöveg.length() ; i++){ int c =(int) szöveg.charAt(i); kimenet.write(c); } kimenet.close(); }catch (IOException e){System.out.print(e);}
Karakteres állomány kezelése import java.io.*; public class masolas{ public static void main(String [] args) { try{ FileReader bemenet = new FileReader(“forras.txt”); FileWriter kimenet = new FileWriter(“cél.txt”); while(true) { int c = bemenet.read(); if (c == -1) break; kimenet.write(c); } bemenet.close(); kimenet.close(); } catch (IOException e){System.out.print(e);}
Bináris állományok kezelése Kell a java.io Bemenethez használjuk a FileInputStream, Kimenethez használjuk a FileOutputStream osztályt FileInputStream bemenet =new FileInputStrem(˝feldolgozando.dat˝); … bemenet.close(); FileOutputStream kimenet=new FileOutputStream(˝irasra.txt˝); kimenet.close();
Bináris file írása import java.io.*; public class filefeltolt{ public static void main(String [] args) { try{ FileOutputStream kimenet = new FileOutputStream(˝mentes.txt˝); for ( int i = 201 ; i <=210 ; i++){ kimenet.write(i); } kimenet.close(); }catch (IOException e) {System.err.print(e);}
Bináris file olvasása import java.io.*; public class filebolkiir{ public static void main(String [] args) { try{ FileInputStream bemenet = new FileInputStream(“szamok.dat”); while(true) { int szam = bemenet.read(); if (szam == -1) break; System.out.println(szam); } bemenet.close(); } catch (IOException e) {System.err.print(e);}
Feladat Készítsünk Java programot amely az első paraméterként megadott állományt binárisan átmásolja a második paraméterként megkapott állományba Készítsünk Java programot amely a paraméterként megkapott állomány páros karaktereit a paros.txt, a páratlan karaktereit a paratlan.txt állományba írja!
Szövegfileok (pufferelt műveletek) Kell a java.io Nem elemenként hanem részenként történik a beolvasás. Ez a rész egy művelettel kezelhető. Olvasáshoz az osztályok BufferedInputStream (string) BufferedReader (byteok) Íráshoz az osztályok PrintWriter (string) PrintStream (byte)
Szöveg beolvasás BufferReader bemenet = new BuffereReader(new FileReader(“bemenet.txt”)); String line = bemenet.readline(); bemenet.close();
Szöveg kiírása PrintWriter kimenet = new PrintWriter( new FileWriter("kimenet.txt")); kimenet.println("Serteperte, felseperte"); kimenet.close();
Feladat Adott a törpök.dat állomány amelyben soronként egy törp neve és számértékek. Hozzunk létre egy állományt amelyben a törp neve van és a hozzá tartozó számok összege!
Megoldás import java.io.*; import java.util.*; public class torpatlag{ public static void main(String [] args) { try { BufferedReader bemenet = new BufferedReader(new FileReader("bemenet.txt")); PrintWriter kimenet = new PrintWriter(new FileWriter("kimenet.txt")); for ( String line = bemenet.readLine(); line != null; line = bemenet.readLine() ){ double sum = 0; StringTokenizer st = new StringTokenizer(line); String name = st.nextToken(); while ( st.hasMoreTokens() ) { String d = st.nextToken(); sum += Double.parseDouble(d); } kimenet.println(name + " " + Double.toString(sum)); bemenet.close(); kimenet.close();} catch(IOException e){System.err.print(e);}
StringTokenizer osztály String részekre bontása Megadható az elválasztó karakter StringTokenizer(String szöveg, String elválasztókarakter); Alapértelmezés a szóköz az elválasztásnak (\t\n\r\f – fehérszóközök)
StringTokenizer osztály hasMoreTokens() Igazat ad vissza ha van még rész nextToken() A következő tokent adja vissza értékül countTokens() Visszadja a hátralévő részek számát
Vége