Java RandomAccessFile Beispiel
Java RandomAccessFile bietet die Möglichkeit, Daten in einer Datei zu lesen und zu schreiben. RandomAccessFile arbeitet mit der Datei als großes Array von Bytes, die im Dateisystem gespeichert sind, und einem Cursor, mit dem wir die Position des Dateizeigers bewegen können.
Java RandomAccessFile
Die RandomAccessFile-Klasse ist Teil von Java IO. Beim Erstellen der Instanz von RandomAccessFile in Java müssen wir den Modus angeben, um die Datei zu öffnen. Um beispielsweise die Datei im Nur-Lesen-Modus zu öffnen, müssen wir „r“ verwenden und für Lese-Schreib-Operationen müssen wir „rw“ verwenden. Mit dem Dateizeiger können wir Daten aus der Random-Access-Datei an jeder Position lesen oder schreiben. Um den aktuellen Dateizeiger zu erhalten, können Sie die Methode getFilePointer() aufrufen und um den Index des Dateizeigers festzulegen, können Sie die Methode seek(int i) aufrufen. Wenn wir Daten an einem Index schreiben, an dem bereits Daten vorhanden sind, wird es überschrieben.
Java RandomAccessFile Lesebeispiel
Wir können ein Bytearray aus einer Datei mit RandomAccessFile in Java lesen. Unten ist der Pseudocode, um eine Datei mit RandomAccessFile zu lesen.
RandomAccessFile raf = new RandomAccessFile("file.txt", "r");
raf.seek(1);
byte[] bytes = new byte[5];
raf.read(bytes);
raf.close();
System.out.println(new String(bytes));
In der ersten Zeile erstellen wir eine RandomAccessFile-Instanz für die Datei im Nur-Lesen-Modus. Dann bewegen wir in der zweiten Zeile den Dateizeiger auf den Index 1. Wir haben ein Bytearray der Länge 5 erstellt, daher werden beim Aufrufen der Methode read(bytes) dann 5 Bytes von der Datei in das Bytearray gelesen. Schließlich schließen wir die RandomAccessFile-Ressource und drucken das Bytearray auf die Konsole.
Java RandomAccessFile Schreibbeispiel
Hier ist ein einfaches Beispiel, das zeigt, wie man Daten mit RandomAccessFile in Java in eine Datei schreibt.
RandomAccessFile raf = new RandomAccessFile("file.txt", "rw");
raf.seek(5);
raf.write("Data".getBytes());
raf.close();
Da RandomAccessFile die Datei als Bytearray behandelt, kann die Schreiboperation die Daten überschreiben sowie an eine Datei anhängen. Es hängt alles von der Position des Dateizeigers ab. Wenn der Zeiger über die Dateilänge hinaus verschoben und dann die Schreiboperation aufgerufen wird, dann werden Junk-Daten in der Datei geschrieben. Daher sollten Sie dies bei der Verwendung der Schreiboperation beachten.
RandomAccessFile Anhängebeispiel
Wir müssen nur sicherstellen, dass der Dateizeiger am Ende der Datei steht, um an eine Datei anzuhängen. Unten ist der Code, um mit RandomAccessFile an eine Datei anzuhängen.
RandomAccessFile raf = new RandomAccessFile("file.txt", "rw");
raf.seek(raf.length());
raf.write("Data".getBytes());
raf.close();
Java RandomAccessFile Beispiel
Hier ist ein komplettes Java RandomAccessFile-Beispiel mit verschiedenen Lese- und Schreiboperationen.
package com.journaldev.files;
import java.io.IOException;
import java.io.RandomAccessFile;
public class RandomAccessFileExample {
public static void main(String[] args) {
try {
// file content is "ABCDEFGH"
String filePath = "/Users/pankaj/Downloads/source.txt";
System.out.println(new String(readCharsFromFile(filePath, 1, 5)));
writeData(filePath, "Data", 5);
//now file content is "ABCDEData"
appendData(filePath, "pankaj");
//now file content is "ABCDEDatapankaj"
} catch (IOException e) {
e.printStackTrace();
}
}
private static void appendData(String filePath, String data) throws IOException {
RandomAccessFile raFile = new RandomAccessFile(filePath, "rw");
raFile.seek(raFile.length());
System.out.println("current pointer = "+raFile.getFilePointer());
raFile.write(data.getBytes());
raFile.close();
}
private static void writeData(String filePath, String data, int seek) throws IOException {
RandomAccessFile file = new RandomAccessFile(filePath, "rw");
file.seek(seek);
file.write(data.getBytes());
file.close();
}
private static byte[] readCharsFromFile(String filePath, int seek, int chars) throws IOException {
RandomAccessFile file = new RandomAccessFile(filePath, "r");
file.seek(seek);
byte[] bytes = new byte[chars];
file.read(bytes);
file.close();
return bytes;
}
}
Das ist alles für RandomAccessFile in Java.