Heim >Java >javaLernprogramm >Wie lese ich eine Datei in Java in umgekehrter Reihenfolge?
Ich muss eine Datei in umgekehrter Reihenfolge lesen, beginnend mit der letzten Zeile und geht weiter zum Anfang.
Verwenden von Dateien mit wahlfreiem Zugriff und Zeilenscannen
Um eine Datei mit BufferedReader in umgekehrter Reihenfolge zu lesen, können wir Verwenden Sie RandomAccessFile, um den Dateizeiger zu manipulieren und in umgekehrter Reihenfolge nach Zeilenumbrüchen zu suchen.
So können Sie diesen Ansatz in Java implementieren:
<code class="java">import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; public class ReverseFileReader { public static void readAndReverse(String filePath) { try { // Create a RandomAccessFile instance for the file RandomAccessFile file = new RandomAccessFile(filePath, "r"); // Calculate the file length long fileLength = file.length(); // Create an ArrayList to store the lines of the file ArrayList<String> lines = new ArrayList<>(); // Set the file pointer to the end of the file file.seek(fileLength); // Scan backwards line by line, starting from the last line while (file.getFilePointer() > 0) { // Find the previous line break and move the file pointer to that position long lineStart = file.getFilePointer(); while (file.getFilePointer() > 0 && file.readByte() != '\n') { file.seek(file.getFilePointer() - 1); } // Read the line and add it to the list file.seek(lineStart); lines.add(file.readLine()); } // Close the file file.close(); // Reverse the order of the lines in the list Collections.reverse(lines); // Print the lines in reverse order for (String line : lines) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { // Specify the file path to be read in reverse order String filePath = "/path/to/your/file.txt"; // Read and reverse the file readAndReverse(filePath); } }</code>
Das obige ist der detaillierte Inhalt vonWie lese ich eine Datei in Java in umgekehrter Reihenfolge?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!