Java RandomAccessfile gibt den Speicherort an, um das Lesen und Schreiben von Dateien zu implementieren
RandomAccessfile gehört zur zufälligen Leseklasse. Es kann den Inhalt der Datei selbst zufällig bedienen und Inhalte am angegebenen Ort der Datei lesen und schreiben, was in vielen Fällen sehr bequem ist.
RandomAccessFile wird verwendet, um auf Dateien zuzugreifen, die Datensätze enthalten. Sie können die Seek () -Methode verwenden, um auf Datensätze zuzugreifen und zu lesen und zu schreiben. Die Größe dieser Aufzeichnungen muss nicht gleich sein; Ihre Größe und Lage müssen jedoch bekannt sein. Diese Klasse ist jedoch auf Betriebsdateien beschränkt.
RandomAccessFile gehört nicht zum InputStream- und OutputStream -Klassen. Tatsächlich hat es neben der Implementierung der DataNput- und DataOutput -Schnittstellen (DataNputStream und DataOutputStream diese beiden Schnittstellen) auch mit diesen beiden Klassen nichts zu tun und verwendet nicht einmal irgendwelche Funktionen, die bereits in den Klassen "InputStream" und "OutputStream" vorhanden sind. Es ist eine völlig unabhängige Klasse, und alle Methoden (hauptsächlich zu sich selbst gehören) werden von Grund auf neu geschrieben. Dies kann daran liegen, dass sich RandomAccessfile in der Datei hin und her bewegen kann, daher unterscheidet sich sein Verhalten von anderen E/A -Klassen. Kurz gesagt, es ist eine separate Klasse, die das Objekt direkt erbt.
Grundsätzlich besteht die Arbeitsweise von RandomAccessfile darin, DataNputStream und DataOutputStream zu kombinieren und einige seiner eigenen Methoden hinzuzufügen, z. Darüber hinaus verfügt sein Konstruktor über einen Parameter, der angibt, ob die Datei im schreibgeschützten Modus ("R") oder im Read-Write-Modus ("RW") (genau das gleiche wie der fopen () von C) geöffnet werden soll. Es unterstützt nicht das Schreiben nur Dateien.
Nur RandomAccessfile verfügt über eine Such -Suchmethode, und diese Methode ist nur für Dateien anwendbar. BuferedInputStream verfügt über eine Mark () -Methode, mit der Sie die Marke festlegen können (das Ergebnis in einer internen Variablen speichern) und dann Reset () aufzurufen, um in diese Position zurückzukehren, aber seine Funktion ist zu schwach und nicht sehr praktisch.
Beispielcode:
Java.io.ioxception importieren; import Java.io.randomaccessfile;/** * RandomAccessfile gehört zu einer zufälligen Leseklasse und kann den Inhalt der Datei selbst direkt und zufällig bedienen. lesen(); } public static void write () löst ioException {// auf die Datei read-write-Weise randomAccessfile raf = new randomAccessfile ("d: //test.txt", "rw") aus. raf.writebytes ("Hallo Welt!"); raf.writeBoolean (wahr); raf.writeInt (30); Raf.writedouble (3,56); raf.close (); } public static void read () löscht ioException {randomAccessfile raf = new randomAccessfile ("d: //test.txt", "r"); Raf.seek (12); // Setzen Sie die Position des Zeigers boolean booleanValue = raf.readboolean (); int intValue = raf.readint (); Double Double Value = raf.readDouble (); raf.seek (0); // Setzen Sie die Position des Zeigers auf den Beginn des Datei byte [] bytes = new Byte [12]; für (int i = 0; i <bytes.length; i ++) Bytes [i] = raf.readByte (); // Lesen Sie ein Byte jeweils ein Byte und weisen Bytes [i] String -StringValue = new String (Bytes) zu; raf.skipBytes (1); // überspringen einen Byte -Byte intValue2 = raf.readint (); raf.close (); System.out.println (booleanValue); System.out.println (intValue); System.out.println (DoubleValue); System.out.println (StringValue); System.out.println (intValue2); }}Danke fürs Lesen, ich hoffe, es kann Ihnen helfen. Vielen Dank für Ihre Unterstützung für diese Seite!