DCV 2023 03/Strukturierte Programmierung Uebungen/Datenstroeme
Files
Aufgabe: Verzeichnis auflisten
Mit der Hilfe von java.io.File lese den Inhalt des definierten Verzeichnisses und erstelle einen Ausdruck mit der Liste der Dateien.
Erweiterung: Liste die Dateien in der Rheinfolge: Unterverzeichnisse, Dateien nach Größe absteigend
Aufgabe: Dateien Zählen und Summen
Mit der Hilfe von java.io.File lese den Inhalt des definierten Verzeichnisses und kalkuliere:
- Anzahl Dateien im Verzeichnis
- Summe der Größe der Dateien (ohne der Größe von Unterverzeichnisse)
Aufgabe: Dateien Zählen und Summen (Rekursiv)
Mit der Hilfe von java.io.File lese den Inhalt des definierten Verzeichnisses und alle Unterverzeichnisse und kalkuliere:
- Anzahl Dateien im Verzeichnis
- Summe der Größe der Dateien (ohne der Größe von Unterverzeichnisse)
Aufgabe: Größte Datei suchen
Frage den Anwender nach einem Dateipfad. Suche nach der größten Datei in dem Verzeichnis inkl. seine Unterverzeichnisse.
Gebe aus dem relativen Pfad vom Startverzeichnis und die Größe
Aufgabe: Datei nach Name suchen
Frage den Anwender nach einem Dateipfad und nach einem Suchkriterium. Suche alle Dateien im Verzeichnis, inkl. Unterverzeichnisse, deren Name dem Suchkriterium entspricht.
Liste die Dateien mit deren relativen Pfad.
Streams
Im folgenden geht es um das einlesen und verarbeiten von Textdateien. Erstelle wo möglich und nötig für die einzelnen Schritte eine eigene Methode. Verwende dazu die Datei simpleText.txt im resources/txt/ Ordner.
//Bytestrom
InputStream inputStream = Objects.requireNonNull(Your_class_name_here.class.getClassLoader().getResourceAsStream("txt/simpleText.txt");
//Zeichenstrom
Reader reader = new InputStreamReader(Objects.requireNonNull(Your_class_name_here.class.getClassLoader().getResourceAsStream("txt/simpleText.txt")));
//Bsp.: Scanner
Scanner scanner = new Scanner(inputStream);
//Bsp.: BufferedReader
BufferedReader bufferedReader = new BufferedReader(reader);
Aufgabe: File schreiben
Lies, solange Eingaben vom Benutzer, bis eine Leerzeile eingegeben wird. Dann schreibe die Eingaben in eine Datei. Der Pfad soll lauten assets/tmp/output.txt.
Aufgabe: Daten tabellarisch darstellen
Erstelle assets/tmp/output.txt Datein mit einem schönen tabellarischen Ausdruck aus der folgenden Arrays:
String[] firstName = {"Alfonso", "Beatrix-Eleonor", "Cecil", "Daniel", "Elmar"};
String[] lastName = {"Klein", "Kinderdorfer", "Al Elmenar", "Schmidt", "Simma"};
int[] age = {40, 78, 5, 18, 81};
String[] place = {"Wien", "Schwarzach", "Wiener Neudorf", "Sankt Pölten", "Sankt Pölten"};
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};
Denke daran, dass eine Tabelle Kopfzeile, Trennzeichen haben kann.
Aufgabe: Erstelle eine Klasse für Logging
Der Logging schreibt fortlaufend eine Datei. Es wird nicht überschreiben.
/*
severity=1 --> ERROR
severity=2 --> WARNING
severity=3 --> INFO
Ergebnis:
2022.04.26. 09:30:34 INFO: Guten Morgen!
2022.04.26. 09:31:01 WARNING: Kein passende Aufgabe gefunden
...
*/
public static void log(int severity, String message){
}
Bonusaufgabe: Log Rotation
Es kann schwerwiegende Konsequenzen haben, wenn eine Software die komplette Festplatte vollschreibt. Aus diesem Grund ist es üblich, dass im Fall die Logdatei die Größe (1 MByte) überschreitet, wird als ".old" umgenannt. Falls eine weitere ".old" Datei existieren würde, wird die überschreiben.
Aufgabe: File einlesen und Ausgeben
Lies das File mit hilfe von Scanner oder BufferedRead ein und gib es aus.
Aufgabe: Buchstaben zählen
Lies das File mit hilfe von Scanner oder BufferedRead ein.
- Gib die Anzahl der Buchstaben aus
- Erstelle eine Methode welche nur einen bestimmten Buchstaben des Texts zählt, welcher als Parameter mitgegeben wird.
- Erstelle eine Methode welche ein
char[]von Bestimmten Buchstaben des Texts zählt. Daschar[]soll als Parameter mitgegeben werden können. Es soll nur die Gesamtzahl aller Vorkommnisse der Buchstaben gezählt werden. Wie oft ein einzelner Buchstabe vorkommt ist hier uninteressant.
Tip zu 2)
System.out.println(countChar(text, 'a'));
Tip zu 3)
char[] charsToCount = new char[]{'a', 'z', 'e'};
System.out.println(countChars(text, charsToCount));
Aufgabe: Wörter zählen
Lies das File mit Hilfe von Scanner oder BufferedRead ein. Und gib die Anzahl der Wörter aus. Es muss nicht exakt sein.
Aufgabe: Dynamisches Wörter zählen
Lies das File mit Hilfe von Scanner oder BufferedRead ein. Frage den Benutzer nach einem bestimmten Wort und gib aus wie oft es vorkommt.
Aufgabe: Dynamisches Wörter ersetzen
Lies das File mit Hilfe von Scanner oder BufferedRead ein. Frage den Benutzer nach zwei Wörtern. Das erste Wort soll durch das zweite Wort im Text ersetzt werden. Gib dannach den Text aus.