Posible duplicado:
cómo crear una cadena Java a partir del contenido de un archivo Archivo de
texto completo a una cadena en Java
Estoy intentando leer el contenido de un archivo usando FileReader. Pero quiero leer el archivo sin leer línea por línea. ¿Es posible leer el archivo completo sin bucle? Estoy usando el siguiente código
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();
}
Respuestas:
Si el archivo es pequeño , puede leer todos los datos una vez:
fuente
file.length()
puede devolver 0 para archivos bajo/proc
. Y en esos casos, este fragmento devolverá una cadena vacía.read
puede que no llene todo el búfer. Puede funcionar en la práctica con la mayoría de los JRE, pero no hay garantía en la API.Solución Java 7 de una línea
o
fuente
String text = Files.readString(Paths.get("file"));
es incluso más corto, asumiendo que desea una salida de cadena UTF-8.file.toPath()
adentroreadAllBytes
Call requires API level 26: java.nio.file.Files#readAllBytes
- lo mismo parareadString
.Puede intentar usar Scanner si está usando JDK5 o superior.
O también puedes usar Guayaba
fuente
String data = Files.toString(new File("path.txt"), Charsets.UTF_8);
. Solo un pequeño error tipográfico. :-)Scanner
solo leer los primeros 1024 bytes del archivo. Mira el código fuente. Leyó el búfer y lo verificó con esta expresión regular. Esto siempre es válido, luego devuelve todo el contenido del búfer. Por defecto, el búfer tiene un tamaño de 1024 bytes.Files.readAllLines()
. Para los JRE heredados,FileInputStream.read()
probablemente sea lo mejor. No estoy seguro de si es portátil para todas las plataformas (es decir, Ctl-Z se reconoce en todas partes), y es fácil no hacer unScanner.close()
.Si está utilizando Java 5/6, puede utilizar Apache Commons IO para leer el archivo a la cadena. La clase
org.apache.commons.io.FileUtils
contiene varios métodos para leer archivos.por ejemplo, usando el método
FileUtils#readFileToString
:fuente
Desde Java 11 puedes hacerlo aún más simple:
Fuente: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/Files.html#readString(java.nio.file.Path)
fuente