Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

ArrayInputRecordStream

&pagelevel(5)&pagelevel

Ein ArrayInputRecordStream-Objekt repräsentiert ein für den sequentiellen Lese-Zugriff geöffnetes Array von Record-Objekten. Das Öffnen erfolgt implizit beim Erzeugen des Objektes (siehe „Öffnen und Schließen"), hat aber hier keine weitere Bedeutung, wie etwa bei Dateien.

Die ArrayInputRecordStream-Klasse bietet Methoden zum Lesen und Überspringen von Sätzen. Die Methodengruppe zur Positionierung ist ebenfalls vollständig unterstützt.

Innerhalb des Array aus dem gelesen wird, ist immer eine aktuelle Leseposition definiert, an der die nächste Lese-Operation stattfindet. Die aktuelle Leseposition wird durch die Nummer des Satzes in dem Array definiert, wobei die Sätze mit Null beginnend nummeriert werden. Nach dem Öffnen ist die aktuelle Leseposition Null.

Öffnen und Schließen

Bei der Konstruktion eines ArrayInputRecordStream-Objektes stellt der Aufrufer das Array mit Datensätzen bereit, aus dem später gelesen werden soll. Dabei wird dieses Array direkt verwendet und nicht etwa kopiert, d.h. etwaige Manipulationen an diesem Array oder den darin enthaltenen Datensätzen wirken sich direkt auf das ArrayInputRecordStream-Objekt aus. Mit einer zweiten Variante des Konstruktors kann der Anwender einen Teil eines Arrays mit Datensätzen (definiert durch Offset und Länge) für die Eingabe bereitstellen.

Die Methode close() ist zwar vorhanden, hat aber für diese Klasse keine Funktion.

Methoden zum Lesen von Sätzen

Die read-Methode wird in zwei Ausprägungen angeboten. Einmal eine Variante, bei der der gelesene Satz in einem neu erzeugten Record-Objekt als Ergebnis bereitgestellt wird und einer Variante, bei der ein vom Aufrufer als Argument übergebenes Record-Objekt mit den Daten des gelesenen Satzes gefüllt wird.

Wird ein Satzpuffer neu angelegt, so hat er genau die Größe der gelesenen Daten. Stellt der Aufrufer das Record-Objekt bereit, muss er dafür sorgen, dass der Satzpuffer groß genug ist, um die Daten des zu lesenden Satzes aufzunehmen. Wenn der angegebene Satzpuffer zu klein ist, um die kompletten Daten aufzunehmen, wird eine Ausnahme ausgelöst und es werden keine Daten übertragen.

Die Methoden read() lesen den Satz an der aktuellen Leseposition. Die aktuelle Leseposition wird anschließend um eins erhöht, d.h. es wird automatisch auf den nächsten Satz im Array positioniert.

Mit der Methode skip() ist es möglich, die angegebene Anzahl Sätze im Array zu überspringen. Dabei kann es vorkommen, dass nicht exakt die angegebene Anzahl an Sätzen übersprungen werden kann, weil das Array nicht mehr so viele Datensätze enthält. Der Rückgabewert von skip() gibt die tatsächliche Anzahl der übersprungenen Sätze an.

Die Methode available() liefert die Anzahl der Sätze, die noch gelesen werden können, bevor das Ende des Arrays erreicht ist. Das Lesen aus einem Array von Datensätzen führt niemals zu Wartezuständen.

Methoden zur Positionierung

Die Methode markSupported() gibt Auskunft darüber, ob das Markieren bzw. Repositionieren für diesen Datenstrom unterstützt wird. In dieser Klasse liefert diese Methode immer true.

Die Methode mark() merkt sich die aktuelle Leseposition, um später an diese Stelle zurückpositionieren zu können. Das für mark() vorgesehene Argument wird bei dieser Implementierung ignoriert und sollte immer als 0 angegeben werden.

Ein Aufruf von reset() repositioniert auf eine zuvor mit mark() gemerkte Lese-position.