web-dev-qa-db-fra.com

lire le fichier complet sans utiliser de boucle dans java

Duplicate possible:
Comment créer une Java chaîne à partir du contenu d'un fichier
Fichier texte entier en une chaîne en Java

J'essaie de lire le contenu d'un fichier à l'aide de FileReader. Mais je veux lire le fichier sans lire ligne par ligne. Est-il possible de lire le fichier entier 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();
 }
90
Adesh singh

Si le fichier est petit, vous pouvez lire l’ensemble des données une 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");
115
imxylz

Solution monoligne Java 7

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

ou

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

Si vous utilisez Java 5/6, vous pouvez utiliser Apache Commons IO pour lire le fichier dans une 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);
_
31
Paul Vargas

Vous pouvez essayer d'utiliser Scanner si vous utilisez JDK5 ou une version ultérieure.

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

Ou vous pouvez aussi utiliser goyave

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

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/fr/Java/javase/11/docs/api/Java.base/Java/nio/file/Files.html#readString (Java.nio.file.). Chemin)

2
EarthMind