Ein FileOutputRecordStream-Objekt repräsentiert eine für den sequentiellen Schreib-Zugriff geöffnete Datei. Die Datei wird beim Erzeugen des Objektes implizit geöffnet (siehe Abschnitt „Öffnen und Schließen einer Datei“ unten).
Die FileOutputRecordStream-Klasse bietet Methoden zum Schreiben von Sätzen sowie zum Schließen der Datei. In einer Datei, die für sequentiellen Schreib-Zugriff geöffnet wurde, werden Datensätze immer am Ende der Datei hinzugefügt.
Die Datei, die geöffnet werden soll, muss im zugrunde liegenden Dateisystem schon existieren. Für die Erzeugung einer Datei muss die Methode createNewFile() der Klasse RecordFile benutzt werden.
Öffnen und Schließen einer Datei
Bei der Konstruktion eines FileOutputRecordStream-Objektes wird die als RecordFile-Objekt angegebene Datei mit der angegebenen Zugriffsmethode oder den angegebenen Zugriffsparametern im Schreib-Modus geöffnet. Dabei kann gewählt werden, ob ein evtl. vorhandener Inhalt der Datei beim Öffnen gelöscht wird oder nicht.
Die Datei muss im darunter liegenden Dateisystem bereits existieren und die Zugriffsmethode muss zu diesem Dateisystem gehören und muss für diese Datei erlaubt sein. Der Benutzer muss die zum Schreiben erforderlichen Zugriffsrechte auf die Datei besitzen. Falls ein Security Manager aktiv ist und dessen Einschränkungen für diese Datei ein Schreiben nicht erlauben, so wird eine Exception ausgelöst (siehe Abschnitt „Sicherheit").
Werden zum Öffnen Zugriffsparameter angegeben, so werden diese beim Öffnen berücksichtigt, soweit nicht die Datei-Parameter Vorrang haben. Nach dem Öffnen werden sie mit den entsprechenden Werten der geöffneten Datei aktualisiert.
Die Methode close() schließt die Datei. Danach sind keine E/A-Operationen über dieses FileOutputRecordStream-Objekt mehr möglich.
Besonderheiten des DMS-Dateisystems
Die Shared-Update-Verarbeitung (siehe Abschnitt „Shared-Update-Verarbeitung" sowie Abschnitt „AccessParameter") eines FileOutputRecordStream ist für die Zugriffsmethoden ISAM und nur dann möglich, wenn eine existierende Datei zum Erweitern geöffnet wird. Andere Anwendungen können die Datei dann allerdings nicht ebenfalls als FileOutputRecordStream öffnen. Generell wird von einer Shared-Update-Verarbeitung im Zusammenhang mit FileOutputRecordStream abgeraten. In Ausnahmefällen kann das gleichzeitige Eröffnen als FileInputRecordStream sinnvoll sein.
Methoden zum Schreiben von Sätzen
Die Methode write() schreibt einen Satz hinter den letzten vorhandenen Satz der Datei. Bei einer Shared-Update-Verarbeitung wird implizit eine Sperre angefordert, was bei Zugriffskonflikten je nach der mittels setWaitMode() eingestellten Option zu einer RecordLockedException bzw. zum Warten des Threads oder der gesamten Anwendung führen kann. Nach Abschluss des Schreibvorgangs wird die Sperre aufgehoben.
Die Methode flush() sorgt dafür, dass tatsächlich alle mit write() geschriebenen Sätze in die Datei ausgegeben werden, auch wenn die zugrunde liegende Zugriffsmethode eine Pufferung der Ausgaben vorsieht. Bei einer Shared-Update-Verarbeitung wird eine bestehende Sperre für diese Datei aufgehoben.