package oop.FileHandling;

public class FileHandling {
	/*
	 * - bezieht sich auf das Arbeiten mit Dateien und Verzeichnissen, einschließlich Erstellen, Lesen, 
	 *   Schreiben, Bearbeiten und Löschen.
	 * - die Kommunikation zwischen File und Programm  heißt (stream)
	 * - Programm liest (Read) aus dem File (Input stream)
	 * - Programm schreibt (Write) oder (speichert) auf dem File (output Stream)
	 * - Es gibt ein eingine Stream für Lesen
	 * - Es gibt ein eingine Stream für schreiben
	 * - man kann das easy in Konstruktor als parameter und methode als parameter machen oder drin 
	 * 
	 * - FileInputStream und FileOutPutStream sind für File Texte nicht geeignet, 
	 * 	 alternativ möglichkeit die abstrakte Klassen Reader und Writer 
	 * - Hinweis: Die abstrakte Klasse Reader liest Zeichen für Zeichen und ruft die Methode read() jedes Mal auf, wenn ein neues Zeichen gelesen wird.
	 * 		Wenn wir z.B. 10 Zeichen lesen möchten, wird die Methode read() 10 Mal aufgerufen.
 	 * 		
 	 * 		Alternative Möglichkeit: Die Klasse BufferedReader kann verwendet werden, um ganze Zeilen oder größere Blöcke von Zeichen auf einmal zu lesen,
 	 * 		was effizienter sein kann, da sie den Lesevorgang puffert und somit weniger oft auf die zugrunde liegende Datenquelle zugreift.
 	 * - printWriter ist für alle Datentyps  gut geeinigt (kann nur schreiben auf dem File)
 	 * - Scanner ist für alle Datentyps gut geeinigt (kann nur lesen auf dem File)
 	 * - flush() soll aufgerufen werden
 	 * - BufferReader ist besser als Scanner
 	 * 
 	 * Objekte einer Klasse können auch auf dem File gelesen und geschriben werden:
 	 * 
 	 * - Serialization: ist eine (marker) lerre interface Klasse, die implemntiert werden soll
 	 * 					, wenn wir das Objekt auf einem File schreiben möchten
 	 * 
 	 * 1. Serialization (Objekt schreiben): Ist ein Mechanismus zur Umwandlung eines Objekts in einen Byte-Stream,
 	 * 					  der dann in einer Datei gespeichert werden kann. Dies wird durch die Klasse ObjectOutputStream ermöglicht.
 	 * 
 	 * 2. Deserialization (Objekt lesen): Ist ein Mechanismus zur Umwandlung eines Byte-Streams zurück in ein Objekt.
 	 * 										 Dies wird durch die Klasse ObjectInputStream ermöglicht.
 	 */			
	

}
