123 votes

lire un fichier complet sans utiliser de boucle en java

Duplicata possible :
Comment créer une chaîne de caractères Java à partir du contenu d'un fichier ?
Conversion d'un fichier texte entier en une chaîne de caractères en Java

J'essaie de lire le contenu d'un fichier à l'aide de FileReader . Mais je veux lire le fichier sans le lire ligne par ligne. Est-il possible de lire l'ensemble du fichier sans boucle ? J'utilise le code suivant

 try
 {
     File ff=new File("abc.txt");
     FileReader fr=new FileReader(ff);

     String s;
     while(br.read()!=-1)
     {
          s=br.readLine();
     }
 }

 catch(Exception ex)
 {
     ex.printStackTrace();
 }

202voto

Evgeniy Dorofeev Points 52031

Solution Java 7 en une ligne

List<String> lines = Files.readAllLines(Paths.get("file"), StandardCharsets.UTF_8);

ou

 String text = new String(Files.readAllBytes(Paths.get("file")), StandardCharsets.UTF_8);

141voto

imxylz Points 3777

Si le fichier est petit vous pouvez lire l'ensemble des données en une seule fois :

File file = new File("a.txt");
FileInputStream fis = new FileInputStream(file);
byte[] data = new byte[(int) file.length()];
fis.read(data);
fis.close();

String str = new String(data, "UTF-8");

36voto

Jayamohan Points 5901

Vous pouvez essayer d'utiliser Scanner si vous utilisez JDK5 ou plus.

Scanner scan = new Scanner(file);  
scan.useDelimiter("\\Z");  
String content = scan.next(); 

Ou vous pouvez également utiliser Goyave

String data = Files.toString(new File("path.txt"), Charsets.UTF8);

35voto

Paul Vargas Points 10652

Si vous utilisez Java 5/6, vous pouvez utiliser Apache Commons IO pour lire le fichier en chaîne. La classe org.apache.commons.io.FileUtils contient plusieurs méthodes pour lire les fichiers.

par exemple, en utilisant la méthode FileUtils#readFileToString :

File file = new File("abc.txt");
String content = FileUtils.readFileToString(file);

12voto

EarthMind Points 578

Depuis Java 11, vous pouvez le faire encore plus simplement :

import java.nio.file.Files;

Files.readString(Path path);
Files.readString(Path path, Charset cs)

Source : https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/Files.html#readString(java.nio.file.Path)

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