Utolsó módosítás: 2016.11.12.
Írjunk programot, mely sorokat olvas be a szabványos bemenetről, amíg tud! Ezután fordított sorrendben írja ki a sorokat a szabványos kimenetre! A sorok eltárolására használjuk a java.util.LinkedList<A>
osztályt!
Megjegyzés:
A parancssorban (Linuxon) Ctrl-D
vagy (Windowson) Ctrl-Z
kombinációval tudjuk jelezni a programnak, hogy nincs több sor, amelyet be kellene olvasnia.
Annak eldöntésére, hogy van-e még beolvasásra váró sor, használjuk a java.util.Scanner
osztály hasNextLine()
metódusát! A következő sort a nextLine()
metódussal tudjuk beolvasni.
Valósítsuk meg a Unix-szerű rendszerek cat
programját! A Cat
argumentumként vár egy fájlnevet, melynek tartalmát kiírja a szabványos bemenetre.
Például:
$ echo "Hello, World!" > hello.txt
$ java Cat hello.txt
Hello, World!
Jelezzük hibaüzenettel, ha a fájl nem található. Ehhez kezeljük le a java.io.FileNotFoundException
típusú kivételt!
Gondoskodjunk minden esetben a fájl lezárásáról!
Valósítsuk meg a Unix-szerű rendszerek grep
programját! A Grep
paraméterül vár egy szöveget és egy fájlnevet. Miközben olvassa a fájlt:
kilistázza azokat a sorokat, melyek megegyeznek a paraméter szöveggel.
kilistázza azokat a sorokat, melyben a szöveg megtalálható.
Szorgalmi feladat. A sor számát is kiírja, amelyben a szöveg megtalálható. Segítség: használjuk a java.io.LineNumberReader
-t, hogy megtudjuk, hanyadik sorban járunk!
Például:
$ echo "Hello, World!\n Howdy?" > hello.txt
$ java Grep World hello.txt
Hello, World!
Jelezzük hibaüzenettel, ha a fájl nem található. Ehhez kezeljük le a java.io.FileNotFoundException
típusú kivételt!
Ne kezeljük le az java.io.IOException
típusú kivételt, hanem specifikáljuk a main()
fejlécében!
Gondoskodjunk minden esetben a fájl lezárásáról!
Szorgalmi feladat. Készítsünk programot, mely kiírja egy adott diák félév végi jegyeinek átlagát! A program bemenete a diák neve és egy fájlnév, melyben a diákok jegyei szerepelnek. Minden sorban ugyanannyi jegy szerepel, de előre nem tudhatjuk, hogy pontosan mennyi. Feltesszük, hogy minden sor jól van formázva.
Például:
$ cat grades.txt
Fazekas Sándor:4 3 5 4 5
Mezei Péter:4 2 5 1 3
Nagy Géza:5 4 5 3 4
$ java Avg "Mezei Péter" grades.txt
3.0
$ java Avg "Villám Géza" grades.txt
$ java Avg "Fazekas Sándor" asd
File not found!
Jelezzük hibaüzenettel, ha a fájl nem található. Ehhez kezeljük le a java.io.FileNotFoundException
típusú kivételt!
Szorgalmi feladat. Adott egy fájl, melyben soronként egész számok szerepelnek. Készítsünk programot, mely megállapítja, hogy a számok összege melyik sornál ér el egy paraméterként megadott korlátot a paraméterként megadott fájlban!
Kezeljük le a java.io.FileNotFoundException
kivételt! Adjunk értelmes hibaüzenetet, ha a fájl nem található!
Segítség: használjunk egy java.util.Scanner
objektumot a számok beolvasására.
Például:
$ cat almafa
0
3
3
4
7
$ java Bound 6 almafa
Bound was reached at the 3. line
$ java Bound 8 asdasd
File not found!
Haladóknak. Valósítsuk meg a biztonságos törlést végző swipe
programot! A Swipe
paraméterül vár egy fájlnevet, melynek tartalmát törölni kell, majd:
a szabványos bemenetről olvasott sorokat egészen az üres sorig rögzíti benne.
feltölti a második parancssori paraméterként megadott mennyiségű véletlenszerű
bájttal.
karakterrel.
Kezeljük le az IOException
típusú kivételt! Írjunk ki a kivételobjektumban tárolt hibaüzenetet és a stack-et printStackTrace()
metódussal!
Gondoskodjunk minden esetben a fájl lezárásáról!
Haladóknak. Írjunk programot, mely rekurzívan bejárja a könyvtárakat, és kilistázza a bennük található fájlok számát!
Például:
$ java CountFiles
./ 2
./a/ 3
./a/b/ 4
./c/ 2