Charger le contenu d’un fichier dans une String en Java

Dans ce tutoriel nous allons découvrir comment charger le contenu d’un fichier dans une String en Java 6, 7 et 8, en utilisant InputStreamReader & BufferedReader, Files.readAllBytes() et Files.lines().
 
 

Exemple: Charger le contenu d’un fichier dans une String en Java 6
import java.io.*;

public class Main {
   public static void main(String[] args) throws IOException {
	   
		InputStream is = new FileInputStream("file.txt");
		InputStreamReader isr = new InputStreamReader(is);
		BufferedReader buffer = new BufferedReader(isr);
				
		String line = buffer.readLine();
		StringBuilder builder = new StringBuilder();
				
		while(line != null){
		   builder.append(line).append("\n");
		   line = buffer.readLine();
		}
				
		String str = builder.toString();
		System.out.println(str);
   }
}

Comme vous pouvez le voir, c’est un peu difficile, vous devez écrire beaucoup de code inutile juste pour charger le contenu du fichier dans une String. Regardons maintenant comment lire un fichier dans une String dans JDK 1.7
 

Exemple: Charger le contenu d’un fichier dans une String en Java 7
import java.nio.file.*;
import java.io.*;

public class Main {
   public static void main(String[] args) throws IOException {
	  String str = new String(Files.readAllBytes(Paths.get("file.txt")));
	  System.out.println(str);
   }
}

 
 
C’est presque plus facile en utilisant Java 7. En fait, il devient plus simple avec les Streams & expression lambda en Java 8.
 

Exemple: Charger le contenu d’un fichier dans une String en Java 8

Il y a une très belle nouvelle fonctionnalité dans Java 8 qui vous permet d’obtenir un flux de chaînes à partir d’un fichier dans une seule ligne, en utilisant les Streams. Vous pouvez manipuler le flux comme vous le feriez avec n’importe quel autre flux, par exemple, vous pouvez utiliser filter(), map(), limit(), skip() etc.

import java.nio.file.*;
import java.io.*;

public class Main {
   public static void main(String[] args) throws IOException {
	 Files.lines(Paths.get("file.txt")).forEach(System.out::println);
   }
}

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *