Pourquoi est-threre pas un Fichiers.readAllLines(String path) dans java 7?
Je suis tryting pour apprendre le nio 2
package en Java 7 et je suis tombé sur le Files.readAllLines(Path p, Charset cs)
méthode. Je trouve cela très utile, mais je suis de l'avis qu'il devrait y avoir une version sans la cs
paramètre, juste comme :
public static List<String> readAllLines(String path)
throws IOException
{ return readAllLines(Paths.get(path), Charset.defaultCharset());}
Je suis convaincu que la plupart du temps la méthode sera appelée avec le jeu de caractères par défaut de toute façon, alors pourquoi pas le raccourci. Est-ce que je suis absent sur les jeux de caractères qui justifierait de ne pas avoir cette méthode? Je suis assez surpris parce que Scala a cette option:
Source.fromFile("fileName").getLines
donc je ne vois pas pourquoi Java ne le sont pas. Tout point de vue?
Peut-être qu'ils voulaient dissuader d'utiliser le jeu de caractères par défaut, ou qu'ils voulaient réduire au minimum le nombre de méthodes ajoutées.
Dommage que le downvoter n'a pas de commentaire sur le pourquoi
En supposant jeux de caractères par défaut est ce que vous avez à l'univers de codage de caractères en enfer pour commencer.
peut-être qu'il a été l'un des nio2 développeurs 🙂
News flash:
Dommage que le downvoter n'a pas de commentaire sur le pourquoi
En supposant jeux de caractères par défaut est ce que vous avez à l'univers de codage de caractères en enfer pour commencer.
peut-être qu'il a été l'un des nio2 développeurs 🙂
News flash:
readAllLines(String path)
a été ajoutée dans Java SE 8, et de l'hypothèse d'un jeu de caractères est toujours UTF-8.OriginalL'auteur Chirlo | 2012-10-03
Vous devez vous connecter pour publier un commentaire.
Pas vraiment. La plupart du temps il sera appelé avec le jeu de caractères que vous attendez le fichier encodé dans. Généralement, ces jours, il est de l'UTF-8:
Votre application peut être exécutée sur plusieurs plates-formes et systèmes d'exploitation, à l'aide de différents codage de caractères par défaut. Vous ne voulez pas que votre demande de casser juste à cause de cela.
Je pense que c'est un bon choix, fixation de mal desing décisions du passé. Beaucoup de vieilles méthodes de Java utiliser la valeur par défaut du système de codage, provoquant des comportements incohérents ou l'application, par exemple entre Windows et Linux. Forçant à choisir l'encodage des caractères rend tout simplement votre application plus portable et plus sûr.
BTW, puisque vous êtes, de mentionner
io.Source
classe - notez qu'il retourne un itérateur à la place d'unList<String>
commeFiles
classe. L'avantage: le fichier est chargé paresseusement, pas tous à la fois, à d'énormesArrayList<String>
. Inconvénient: vous devez fermer la source manuellement (vous ne pouvez pas le faire dans votre extrait de code).String.getBytes()
sans un jeu de caractères et la commeEh bien, je dirais que le jeu de caractères j'attends le fichier encodé dans mon jeu de caractères par défaut ( qui est UTF_8 dans mon cas de toute façon 🙂 ). Et si UTF_8 est en tout cas la plus raisonnable options, puis ils auraient pu utiliser que l'option par défaut
c'est une hypothèse juste. Mais encore, je crois que c'est une bonne idée de faire charset explicite.
nous allons ensuite, dire que je souhaiterais pour un
Files.readAllLinesWithDefaultCharset(file)
méthode 🙂 Ça ferait une différence pour moi au moins. Btw, +1 pour l'astuce surio.Source
.OriginalL'auteur Tomasz Nurkiewicz
Vous auriez à demander aux concepteurs, mais très probablement, ils partagent mon point de vue, que la lecture d'un ensemble de fichiers dans la mémoire n'est pas quelque chose à être encouragés. Il n'est pas à l'échelle, et il introduit inutilement du temps et de l'espace des coûts. Traiter le fichier ligne à ligne.
OriginalL'auteur user207421