J'ai besoin de lire un fichier depuis le système de fichiers et de charger tout le contenu dans une chaîne de caractères dans un contrôleur groovy, quelle est la manière la plus simple de le faire ?
C'est la beauté de Groovy :)
J'ai besoin de lire un fichier depuis le système de fichiers et de charger tout le contenu dans une chaîne de caractères dans un contrôleur groovy, quelle est la manière la plus simple de le faire ?
Dois-je exécuter des instructions close() ou le lecteur sera-t-il fermé par la méthode getText() ?
@dasKeks Je pense que l'on peut supposer que l'implémentation de cette méthode ferme toutes les ressources nécessaires. De toute façon, vous n'avez pas accès aux lecteurs qui pourraient être créés, donc vous ne peut pas le fermer
Le chemin le plus court est en effet juste
String fileContents = new File('/path/to/file').text
mais dans ce cas, vous n'avez aucun contrôle sur la façon dont les octets du fichier sont interprétés comme des caractères. Pour l'instant, groovy essaie de deviner l'encodage en regardant le contenu du fichier.
Si vous voulez un encodage de caractères spécifique, vous pouvez spécifier un nom de charset avec
String fileContents = new File('/path/to/file').getText('UTF-8')
Ver Documents sur l'API sur File.getText(String)
pour de plus amples informations.
+1 pour avoir recommandé la version qui prend un paramètre d'encodage. La version someFile.text
ne fait pas de supposition intelligente, il utilise simplement l'encodage par défaut de la plate-forme (généralement UTF-8 sur les Linux modernes, mais quelque chose comme Windows-1252 ou MacRoman sur Windows/Mac OS, à moins que vous ne l'ayez remplacé par la commande -Dfile.encoding=...
)
Dans les versions récentes de Groovy au moins, l'estimation se fait en utilisant CharsetToolkit ce qui est une supposition intelligente.
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.