lire l'intégralité des fichiers sans utiliser de boucle en java
Double Possible:
Comment créer un Java Chaîne à partir du contenu d'un fichier
Tout fichier texte en une Chaîne de caractères en Java
Je suis en train de lire le contenu d'un fichier à l'aide de FileReader . Mais je veux lire le fichier sans le lire ligne par ligne . Est-il possible de lire le fichier en entier sans boucle.
Je suis en utilisant 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();
}
- Ce code ne compile pas pour commencer.
- Il y a une ligne de Java 11 solution à ceci: stackoverflow.com/a/52301018/942774
Vous devez vous connecter pour publier un commentaire.
Si le fichier est petit, vous pouvez lire l'ensemble des données une fois:
str
se termine avec beaucoup de 0 caractères (�) à la fin. Je ne sais pas pourquoi.file.length()
peut retourner 0 pour les fichiers de moins de/proc
. Et dans ces cas cet extrait renvoie une chaîne vide.read
pourrait ne pas remplir la totalité de la mémoire tampon. Il pourrait fonctionner dans la pratique, la plupart des Jre, mais il n'y a aucune garantie dans l'API.Java 7, une solution en ligne
ou
String text = Files.readString(Paths.get("file"));
est encore plus courte, en supposant que vous souhaitez une Chaîne UTF-8 de sortie.Si vous utilisez Java 5/6, vous pouvez utiliser Apache Commons IO pour lire le fichier de chaîne de caractères. La classe
org.apache.commons.io.FileUtils
contais plusieurs méthode pour lire les fichiers.par exemple à l'aide de la méthode
FileUtils#readFileToString
:Vous pouvez essayer d'utiliser Scanner si vous utilisez JDK5 ou plus.
Ou vous pouvez également utiliser Goyave
String data = Files.toString(new File("path.txt"), Charsets.UTF_8);
. Juste une petite faute de frappe. 🙂Scanner
seulement lire les 1024 premiers octets du fichier. Regardez le code source. Il la mémoire tampon de lecture et de le vérifier avec cette regexp. C'est toujours valable, alors il se retourner tout le contenu du tampon. Par défaut de la mémoire tampon de taille de 1024 octets.Files.readAllLines()
. L'héritage pour la Jre,FileInputStream.read()
est probablement le meilleur. Je ne suis pas sûr si c'est portable sur toutes les plateformes (c'est à dire Ctl-Z est reconnu partout dans le monde), et il est facile de manquer de faire unScanner.close()
.