Maison >Java >javaDidacticiel >Comment lire un fichier de la fin au début en utilisant BufferedReader en Java ?

Comment lire un fichier de la fin au début en utilisant BufferedReader en Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-24 10:26:29196parcourir

How to Read a File from End to Start Using BufferedReader in Java?

Lecture d'un fichier de la fin au début en utilisant BufferReader en Java

Problème :
Vous devez lire un fichier de la fin au début, dans l'ordre inverse, à l'aide d'un BufferedReader.

Solution :
La classe BufferedReader standard ne prend pas en charge la lecture d'un fichier dans l'ordre inverse. Cependant, vous pouvez utiliser la classe RandomAccessFile pour y parvenir. Voici un exemple de la façon dont vous pouvez procéder :

<code class="java">import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.RandomAccessFile;

public class ReverseFileReader {

    public static void main(String[] args) {
        // Create a RandomAccessFile to access the file
        RandomAccessFile file = null;
        BufferedReader reader = null;
        try {
            file = new RandomAccessFile("filepath.txt", "r");

            // Get the file size
            long fileSize = file.length();

            // Start reading from the end of the file
            file.seek(fileSize - 1);

            // Initialize a BufferedReader to read from the RandomAccessFile
            reader = new BufferedReader(new FileReader(file.getFD()));

            // Read the file line by line in reverse order
            while ((file.getFilePointer()) > 0) {
                // Get the current line
                String line = reader.readLine();

                // Adjust the file pointer to the beginning of the previous line
                file.seek(file.getFilePointer() - line.length() - 1);

                // Print the line
                System.out.println(line);
            }
        } catch (FileNotFoundException e) {
            System.out.println("File not found.");
        } catch (IOException e) {
            System.out.println("Error reading file.");
        } finally {
            // Close the file and the reader
            try {
                if (file != null) file.close();
                if (reader != null) reader.close();
            } catch (IOException e) {}
        }
    }
}</code>

Dans cet exemple, RandomAccessFile est utilisé pour lire le fichier à partir de la fin en commençant par la fin du fichier et en ajustant le pointeur de fichier vers l'arrière pour chaque ligne lue. Au fur et à mesure de la lecture de chaque ligne, sa position de départ est ajustée dans le fichier jusqu'à ce que le début du fichier soit atteint, vous permettant de lire le fichier dans l'ordre inverse.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn