web-dev-qa-db-fra.com

Lecture d'une ligne particulière d'un fichier texte en Java

Quel est le moyen le plus efficace d’extraire des numéros de ligne spécifiques de données d’un fichier texte? Par exemple, si j'utilise l'analyseur pour analyser un fichier, dois-je d'abord créer un tableau dont la longueur correspond au nombre total de lignes du fichier texte?

Si un fichier texte comporte 30 lignes et que je souhaite uniquement travailler avec les lignes 3, 8 et 12, existe-t-il un moyen de ne lire que ces lignes?

12
Jon

voici comment vous le faites:

import Java.io.*;

public class Test {
public static void main(String [] args) {

    // The name of the file to open.
    String fileName = "temp.txt";
    int counter = 0;

    // This will reference one line at a time
    String line = null;
    FileReader fileReader = null;

    try {
        // FileReader reads text files in the default encoding.
        fileReader = 
            new FileReader(fileName);

        // Always wrap FileReader in BufferedReader.
        BufferedReader bufferedReader = 
            new BufferedReader(fileReader);

        while((line = bufferedReader.readLine()) != null) {
            counter++;
            if(counter == 3 || counter == 8 || counter == 12)
            {
               // do your code
            }
        }   

    }
    catch(FileNotFoundException ex) {
        System.out.println(
            "Unable to open file '" + 
            fileName + "'");                
    }
    catch(IOException ex) {
        System.out.println(
            "Error reading file '" 
            + fileName + "'");                  
        // Or we could just do this: 
        // ex.printStackTrace();
    }
    finally
    {
        if(fileReader != null){
           // Always close files.
           bufferedReader.close();            
        }
    }
}
}
6
No Idea For Name

voici ce que vous pouvez faire. (ce n'est qu'une partie de votre programme, pas exactement votre programme)

int counter 0 =;
BufferedReader br = new BufferedReader(new FileReader(file));  
String line;  
while ((line = br.readLine()) != null) {  
   // process the line.  
   counter++;

   switch(counter){  
    case 3:  
       \\ do your code for line no 3  
       break;  
    case 8:  
       \\ do your code for line no 8  
       break;  
    case 12:  
       \\ do your code for line no 12  
       break;  
   }  
}    
br.close();  
4
Mayank Tiwari

Essaye ça

try
    {
        String sCurrentLine;
        br = new BufferedReader(new FileReader("File_Path"));
        int counter = 0;
        while ((sCurrentLine = br.readLine()) != null)
        {
            counter++;
            if (counter == 3 || counter == 8 || counter == 12)
            {
                System.out.println("" + br.read());
                if (counter == 12)
                    break;
            }
        }
    }
    catch (IOException e)
    {
        System.out.println("Exception " + e);

    }
    finally
    {
      try
        {
           if (br != null)
           {
               br.close();
           }
        }
        catch (IOException ex)
        {
           ex.printStackTrace();
        }
     }
3
newuser

En ce qui concerne la dernière question: Selon ce answer , Java 8 vous permet d’extraire des lignes spécifiques d’un fichier. Des exemples sont fournis dans cette réponse.

1
João Matos

ici vous pouvez trouver la solution pour lire un fichier en respectant la ligne no. Ce site est le meilleur Il contient ce code dans tous les langages de programmation. Et je vous ai donné le code Java. 

https://www.rosettacode.org/wiki/Read_a_specific_line_from_a_file#Java

0
Umar Tahir