Java Verketten von Stream - Bedeutung der Anweisungen?

Predator365

Neues Mitglied
Sehr geehrtes Java Forum,

habe mal eine Frage, die ich mittels Google nicht ganz selbst lösen konnte, vielleicht kann mir hier jemand helfen, ich bedanke mich jedenfalls schonmal!

Haben in Programmieren einen Quelltext bekommen mit 3 Anweisungen, bei denen wir die Unterschiede erläutern sollen.
Die Anweisungen sehen so aus:

1. din = new BufferedReader(new InputStreamReader(System.in));
2. din = new BufferedReader(new FileReader(str));
3. din = new BufferedReader(new FileReader(args[0]));

Bisher weiß ich, dass die Anweisung BufferedReader ja als effiziente Eingabemöglichkeit dient.

Bei 1. fand ich folgendes als Erläuterung : Es wird ein neues Buffered Reader Objekt erstellt, welches den Standart Input liest. Und InputStreamReader wandelt System.in in ein Reader Objekt um.

Zu 2. und 3. konnte ich herausfinden dass, es sich hier um einen Stream handelt, der direkt mit der Programmumgebung verbunden ist, und welcher als Objekt im Konstruktor an den Stream übergeben wird, der mit dem Programm verbunden ist. Letztendlich wird auf eine Datei zugegriffen um aus dieser Zeichen zu lesen.

Meine Fragen sind jetzt, was genau bei 2. und 3. der Unterscheid (str) und (args[0]) bedeutet. Letzteres ist ja ein String Array. Was ist also der gravierende Unterscheid zwischen 2. und 3. und ergibt meine Lösung zu 1. Sinn^^.

Ich bedanke mich schonmal für Rückmeldungen und wünsche ein schönes, baldiges Wochenende!

Gruß Mick.
 
Meine Fragen sind jetzt, was genau bei 2. und 3. der Unterscheid (str) und (args[0]) bedeutet. Letzteres ist ja ein String Array. Was ist also der gravierende Unterscheid zwischen 2. und 3. und ergibt meine Lösung zu 1. Sinn^^.
Als erstes müsste man die Prämisse stellen, dass es wirklich die Objekte sind, welche von str und args[0] impliziert werden - also ein String für str und das Parameter Array aus der main-Methode für args[0]. Theoretisch könnte str z.B. auch ein File-Objekt sein. Unter dieser Prämisse haben beide Aufrufe tatsächlich keinen gravierenden Unterschied. Für den FileReader wird der gleiche Konstruktor aufgerufen -> FileReader(String fileName) . In der Gesamtheit kann arg[0] aber nur in der main-Methode stehen und es müsste zusätzlich überprüft werden, ob ein arg[0] überhaupt existiert. Du hast also ein Fehlerhandling mehr. Darüber hinaus impliziert str dass du einen mehr oder weniger festen Pfad in deiner Programmlogik hast, wohingegen arg[0] Variable durch Parameter Passing auf der Kommandozeile übergeben werden kann.
 
Hallo @MoxxiManagarm ,
danke erstmal für die verdammt schnelle Antwort! Kann erstmal nachvollziehen was du meinst. Hab mal den Quelltext als JPG Datei angehangen und unter diesem Link hochgeladen: https://www.directupload.net/file/d/5287/n6n69ee3_jpg.htm .

Das Programm selbst, soll ja nacheinander Zeichen lesen (aus einer Datei) und alle Leerzeichen in der Variable lz zählen. Alle 3 der oben genannten Anweisungen kommen im Programm vor.

Eventuell hilft das weiter, laut dem Quelltext, sind str und args[0] doch Objekte oder?
Danke dir nochmals.

Gruß Mick
 

Anhänge

  • Quelltext.jpg
    Quelltext.jpg
    430,5 KB · Aufrufe: 30

Neue Themen


Zurück
Oben