Maison > Java > javaDidacticiel > le corps du texte

Comment lire un fichier dans l'ordre inverse en Java ?

Patricia Arquette
Libérer: 2024-10-25 06:10:29
original
232 Les gens l'ont consulté

How to Read a File in Reverse Order in Java?

Lecture d'un fichier dans l'ordre inverse en Java

Problème :

Je dois lire un fichier dans l'ordre inverse, en commençant par la dernière ligne et progressant vers le début.

Solution :

Utilisation de l'analyse de fichiers et de lignes à accès aléatoire

Pour lire un fichier dans l'ordre inverse à l'aide de BufferedReader, nous pouvons utilisez RandomAccessFile pour manipuler le pointeur de fichier et rechercher les sauts de ligne dans l'ordre inverse.

Voici comment implémenter cette approche en Java :

<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>
Copier après la connexion

Détails de mise en œuvre :

  • Nous utilisons RandomAccessFile pour déplacer dynamiquement le pointeur de fichier et analyser le fichier dans l'ordre inverse.
  • Nous stockons les lignes dans une ArrayList pour conserver leur ordre d'origine, puis inverser la liste avant de les imprimer.
  • La méthode readLine() est utilisée pour lire les lignes à partir de la position du pointeur de fichier dans l'ordre inverse.
  • En recherchant les sauts de ligne dans l'ordre inverse, nous lisons effectivement le fichier de la fin au début.

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!