82 votes

Lecture d'un fichier texte en Java

Je veux lire un fichier texte contenant des valeurs séparées par des espaces. Les valeurs sont des entiers. Comment puis-je le lire et le mettre dans une liste de tableau?

Voici un exemple de contenu du fichier texte:

 1 62 4 55 5 6 77
 

Je veux l'avoir dans un répertoire en tant que [1, 62, 4, 55, 5, 6, 77] . Comment puis-je le faire en Java?

171voto

BalusC Points 498232

Vous pouvez utiliser java.io.BufferedReader pour lire un fichier ligne par ligne.

BufferedReader reader = new BufferedReader(new FileReader("/path/to/file.txt"));
String line = null;
while ((line = reader.readLine()) != null) {
    // ...
}

Tutoriel: Basic I/O > I/O Flux > Flux De Caractères


Vous pouvez utiliser String#split() à split String dans certaines régions.

String[] parts = line.split("\\s");

Tutoriel: les Nombres et les Chaînes de caractères > Strings > Manipulation de Caractères dans une Chaîne


Vous pouvez utiliser un améliorés for boucle pour parcourir String des pièces.

for (String part : parts) {
    // ...
}

Tutoriel: concepts de base de Langage > de Contrôle des États de Flux de > La Déclaration d'


Vous pouvez utiliser Integer#valueOf() convertir String en Integer.

Integer i = Integer.valueOf(part);

Tutoriel: Interfaces > La Liste De L'Interface


Vous pouvez utiliser List#add() ajouter un élément à un List.

list.add(i);

Tutoriel: Essai: Les Collections

34voto

tschaible Points 3341

Java 1.5 a introduit la classe Scanner pour la gestion des entrées de fichiers et de flux.

Son utilisation pour obtenir les entiers d'un fichier ressemblerait à ceci.

 List<Integer> integers = new ArrayList<Integer>();    
Scanner fileScanner = new Scanner(new File("c:\\file.txt"));
while (fileScanner.hasNextInt()){
   integers.add(fileScanner.nextInt());
}
 

Vérifiez l'API cependant. Il existe beaucoup plus d'options pour gérer différents types de sources d'entrée, différents délimètres et différents types de données.

18voto

Cet exemple de code vous montre comment lire un fichier en Java.

 import java.io.*;
/**
* This example code shows you how to read file in Java
*
* IN MY CASE RAILWAY IS MY TEXT FILE WHICH I WANT TO DISPLAY YOU CHANGE WITH YOUR   OWN     */

 public class ReadFileExample 
 {
    public static void main(String[] args) 
    {
    System.out.println("Reading File from Java code");
    //Name of the file
    String fileName="RAILWAY.txt";
    try{

    //Create object of FileReader
    FileReader inputFile = new FileReader(fileName);

    //Instantiate the BufferedReader Class
    BufferedReader bufferReader = new BufferedReader(inputFile);

    //Variable to hold the one line data
    String line;

    // Read file line by line and print on the console
    while ((line = bufferReader.readLine()) != null)   {
            System.out.println(line);
    }
    //Close the buffer reader
    bufferReader.close();
    }catch(Exception e){
            System.out.println("Error while reading file line by line:" 
            + e.getMessage());                      
    }

    }
  }
 

12voto

Eddinho Points 338

Regardez cet exemple et essayez de faire le vôtre

 import java.io.*;

public class ReadFile {

    public static void main(String[] args){
        String string="";
        String file ="textFile.txt";

        //reading   
        try{
            InputStream ips=new FileInputStream(fichier); 
            InputStreamReader ipsr=new InputStreamReader(ips);
            BufferedReader br=new BufferedReader(ipsr);
            String line;
            while ((ligne=br.readLine())!=null){
                System.out.println(line);
                string+=line+"\n";
            }
            br.close(); 
        }       
        catch (Exception e){
            System.out.println(e.toString());
        }

        //writing
        try {
            FileWriter fw = new FileWriter (file);
            BufferedWriter bw = new BufferedWriter (fw);
            PrintWriter fileOut = new PrintWriter (bw); 
                fileOut.println (string+"\n test of read and write !!"); 
            fileOut.close();
            System.out.println("the file " + file + " is created!"); 
        }
        catch (Exception e){
            System.out.println(e.toString());
        }       
    }
}
 

5voto

Jonik Points 18905

Juste pour le fun, voici ce que je ferais probablement dans un projet réel, où je suis déjà à l'aide de tous mes préférés bibliothèques (dans ce cas, la Goyave, anciennement connu comme Google Collections).

String text = Files.toString(new File("textfile.txt"), Charsets.UTF_8);
List<Integer> list = Lists.newArrayList();
for (String s : text.split("\\s")) {
    list.add(Integer.valueOf(s));
}

Avantage: Pas beaucoup de code à maintenir (contraste avec, par exemple, ce). Edit: mais il est intéressant de noter que dans ce cas tschaible du Scanner solution n'a plus de code!

Inconvénient: manifestement, vous ne voudrez pas ajouter de nouvelles dépendances de la bibliothèque juste pour cela. (Là encore, il serait bête de ne pas faire usage de Goyave dans vos projets. ;-)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X