Lire le contenu d’un fichier texte avec le JDK8
Je suis en train de réaliser quelques POCS sur ELASTICSEARCH et j’en profite pour me (re)mettre à niveau sur le JDK8.
Une des grosses nouveautés du JDK7 et qui a été suivie par le JDK8 est la manipulation de fichiers avec L’API java.nio.file Les classes Path et Files pour ne citer qu’elles, simplifient grandement la vie du développeur.
Voici un rapide exemple
Lire le contenu d’un fichier texte et mettre le tout dans une chaîne de caractères
Version JDK6
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/mapping.elastic"))); StringBuilder contentBuilder = new StringBuilder(); String line = null; while((line=bufferedReader.readLine())!=null){ contentBuilder.append(line); } bufferedReader.close(); String content = contentbuilder.toString();
Version JDK7
List<String> list = Files.readAllLines(Paths.get(getClass().getResource("/mapping.elastic").toURI())); StringBuilder mappingbuilder= new StringBuilder(); for(String currentLine : list){ mappingbuilder.append(currentLine); } String content = mappingbuilder.toString();
Version JDK8
String content = Files.lines(Paths.get(getClass().getResource("/mapping.elastic").toURI())) .collect(Collectors.joining());
Bon vous allez me dire, il était temps, et vous n’avez pas tort. En tout cas, on notera que ça va dans le bon sens, à savoir éviter de se tartiner une dizaine de lignes de code pour réaliser une opération aussi basique