Duplication possible:
Comment créer une chaîne Java à partir du contenu d'un fichier Fichier
texte entier vers une chaîne en Java
J'essaie de lire le contenu d'un fichier en utilisant FileReader. Mais je veux lire le fichier sans lire une ligne par ligne. Est-il possible de lire le fichier entier sans boucle. J'utilise 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();
}
Réponses:
Si le fichier est petit , vous pouvez lire toutes les données une fois:
la source
file.length()
peut renvoyer 0 pour les fichiers sous/proc
. Et dans ces cas, cet extrait renverra une chaîne vide.read
ne pas remplir tout le tampon. Cela peut fonctionner dans la pratique avec la plupart des JRE, mais il n'y a aucune garantie dans l'API.Solution Java 7 en une ligne
ou
la source
String text = Files.readString(Paths.get("file"));
est encore plus court, en supposant que vous souhaitiez une sortie de chaîne UTF-8.file.toPath()
intérieurreadAllBytes
Call requires API level 26: java.nio.file.Files#readAllBytes
- même chose pourreadString
.Vous pouvez essayer d'utiliser Scanner si vous utilisez JDK5 ou supérieur.
Ou vous pouvez également utiliser Guava
la source
String data = Files.toString(new File("path.txt"), Charsets.UTF_8);
. Juste une petite faute de frappe. :-)Scanner
ne lit que les 1024 premiers octets du fichier. Regardez le code source. Il lit le tampon et le vérifie avec cette expression rationnelle. Ceci est toujours valide - alors il renvoie tout le contenu de la mémoire tampon. Par défaut, le tampon a une taille de 1024 octets.Files.readAllLines()
. Pour les JRE hérités,FileInputStream.read()
c'est probablement le meilleur. Je ne sais pas si c'est portable sur toutes les plates-formes (c.-à-d. Que Ctl-Z est reconnu partout), et il est facile de manquer de faire unScanner.close()
.Si vous utilisez Java 5/6, vous pouvez utiliser Apache Commons IO pour lire un fichier en chaîne. La classe
org.apache.commons.io.FileUtils
contient plusieurs méthodes de lecture de fichiers.par exemple en utilisant la méthode
FileUtils#readFileToString
:la source
Depuis Java 11, vous pouvez le faire encore plus simplement:
Source: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/Files.html#readString(java.nio.file.Path)
la source