Studium, Ausbildung und Beruf
 StudiumHome   FAQFAQ   RegelnRegeln   SuchenSuchen    RegistrierenRegistrieren   LoginLogin

Ein- und Ausgabe in Java
Neues Thema eröffnen   Neue Antwort erstellen
Foren-Übersicht -> Informatik-Forum -> Ein- und Ausgabe in Java
 
Autor Nachricht
alexander86
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 10.02.2008
Beiträge: 6

BeitragVerfasst am: 02 Jun 2008 - 16:36:29    Titel: Ein- und Ausgabe in Java

Hallo,

kann mir bitte mal jemand erklären, was beim Zugriff auf Dateien genau mit Streams gemeint ist? Sind das nicht eigentlich nur Objekte von Reader/Writer Klassen?
Und wozu muss man eigentlich Streams/Dateien öffnen bevor man die read-Methode aufrufen kann bzw. schließen? Ich kann mir nicht vorstellen was da passieren soll, wenn man z.B. close() aufruft...
Es wäre nett wenn mir jemand dieses Prinzip mit dem Dateizugriff mal erklären könnte.

Gruß
Alex
MarkusLe
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 21.06.2007
Beiträge: 258

BeitragVerfasst am: 02 Jun 2008 - 17:59:40    Titel:

Halo Alex,

Streams an sich haben erstmal nichts mit dem Zugriff auf Dateien zu tun, sondern es geht dabei vielmehr um ein Modell zum allgemeinen Zugriff auf Daten, egal woher diese kommen, oder wohin diese geschrieben werden sollen.
Ein Stream ist also letztendlich nichts andres als Daten, die zusammenhängen. (Diese müssten theoretisch nichtmal existieren, bevor darauf zugegriffen wird und könnten erst zum Zugriffszeitpunkt erstellt werden)

Wenn Du Dir z.B. Netzwerkkommunikation anschaust dann werden die Daten die übers Internet oder private Netzwerk gesendet werden über verschiedenste Wege als eigenständige Pakete verschickt und anschließend in der richtigen Reihenfolge aneinandergehängt. (Netzwerkstream)

Das ganze kann natürlich auch irgendwo im Arbeitsspeicher liegen. (MemoryStream)

Betrachtest Du jetzt Dateien sind diese nichts anderes als Daten die irgendwo liegen, letztendlich isses Dir dabei egal woher diese Dateien kommen, Du verwendest einfach einen Stream, den kannst Du bedienen wie jeden anderen Stream evtl. mit ein paar speziellen Funktionen.

Ist es in Jave nicht sogar sa dass Du beim Anlegen eines Readers für die Consoleneingabe nen BufferedStream oder sowas übergeben musst?

Öffnest Du nun einen StreamReader wird dieser sich um alles Kümmern was notwendig ist um zuverlässsig an die Daten zu kommen, also die Datei vom Betriebssystem sperrren lassen dass sie nicht gelöscht wird usw... (Beim Schließen wird soetwas dann wieder rückgängig gemacht)

Öffnest Du einen StreamWriter, wird die Datei i.d.R. für jegliche anderen Schreibzugriffe gesperrt.

Grob zur Objektstruktur:

Stream = Superklasse (IputStream/OutputStream ...)
StreamReader = Abgeleitete Klasse von der Superklasse die für das Lesen von Streams verwendet wird.
TextReader (Ich weiß jetzt nicht obs sowas in Java gibt) = Wird im Normalfall von einem StreamReader abgeleitet und enthält zusätzliche Funktionen oder Änderungen die speziell für das Lesen von TextDaten sind.

HTH

Markus
alexander86
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 10.02.2008
Beiträge: 6

BeitragVerfasst am: 02 Jun 2008 - 20:10:29    Titel:

Danke für die Antwort. Jetzt ist das schon etwas klarer.

Also kann man sagen, dass ein Stream eine allgemeine Zugriffsart auf irgendwelche externen Datenquellen/-ziele ist.
Dazu müsste dann ja auch die Verbindung zu einem Server gehören.
Da ist mir dann auch einigermaßen klar wozu man den Stream öffnen/schließen muss (ich vermute mal zum TCP-Verbindungen herstellen usw.).
Kann man sich dass mit den Dateien so vorstellen, dass das Betreibssystem informiert wird, wenn auf eine Datei zugegriffen wird, damit diese nicht gelöscht wird oder ähnliches...?
MarkusLe
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 21.06.2007
Beiträge: 258

BeitragVerfasst am: 03 Jun 2008 - 15:41:25    Titel:

Alex,

ein Stream ist keine spezielle Zugriffsart für externe Daten sonder allgemein für Daten, ganz egal wo diese liegen, egal ob auf der Festplatte, dem USB Stick, im Arbeitsspeicher irgendwo im Netzwerk etc...
Ein Stream liefert Dir einfach nur der Reihe nach Daten, mit denen Du irgendwie arbeiten kannst, oder Verarbeeitet daten die Du hineingibst. Was letztenendes mit diesen Daten geschieht hängt von dem jeweiligen Stream ab. Für Dich heißt das letzten Endes, die Streams erledigen die Arbeit für Dich, es braucht Dich nicht groß zu interessieren wie, und alle Streams werden ähnlich von dir verwendet.

MfG

Markus
Beiträge der letzten Zeit anzeigen:   
Foren-Übersicht -> Informatik-Forum -> Ein- und Ausgabe in Java
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

Chat :: Nachrichten:: Lexikon :: Bücher :: Impressum