Java java.nio.file.Files readAllLines()Método
readAllLines()El método se utiliza para leer todas las líneas de un archivo y devolverlas comoList<String>Devuelve.
readAllLines()El método tiene dos versiones sobrecargadas:
public static List<String> readAllLines(Path path) throws IOException public static List<String> readAllLines(Path path, Charset cs) throws IOException
La primera versión utiliza el conjunto de caracteres predeterminado (UTF-8) para leer el archivo; la segunda permite especificar un conjunto de caracteres.
Descripción de parámetros
Path path
- Tipo:
java.nio.file.Path - Descripción: objeto de ruta del archivo a leer
- Ejemplo:
Path filePath = Paths.get("example.txt");
Charset cs(parámetro opcional)
- Tipo:
java.nio.charset.Charset - Descripción: conjunto de caracteres utilizado para decodificar el contenido del archivo
- Conjuntos de caracteres comunes:
StandardCharsets.UTF_8StandardCharsets.ISO_8859_1StandardCharsets.US_ASCII
- Ejemplo:
Charset charset = StandardCharsets.UTF_8;
Valor de retorno
- Tipo:
List<String> - Descripción: lista que contiene todas las líneas del archivo; cada elemento representa una línea del archivo
- Nota:
- Separador de línea (como
\no\r\n) no se incluirá en la cadena devuelta - Si el archivo está vacío, devuelve una lista vacía
- El orden de la lista coincide con el orden de las líneas del archivo
- Separador de línea (como
Manejo de excepciones
readAllLines()El método puede lanzar las siguientes excepciones:
IOException- Si se produce un error de E/S (por ejemplo, el archivo no existe)SecurityException- Si no hay permisos suficientes para acceder al archivo
Se recomienda manejar las excepciones al usarlo:
Ejemplo
List<String> lines = Files.readAllLines(path);
// Procesar el contenido leído
} catch (IOException e) {
e.printStackTrace();
// Manejar situaciones de excepción
}
Ejemplos de uso
Ejemplo 1: Uso básico
Ejemplo
import java.util.List;
public class ReadFileExample {
public static void main(String[] args) {
Path filePath = Paths.get("example.txt");
try {
List<String> lines = Files.readAllLines(filePath);
// Imprimir el contenido del archivo
for (String line : lines) {
System.out.println(line);
}
} catch (IOException e) {
System.err.println("Error al leer el archivo: " + e.getMessage());
}
}
}
Ejemplo 2: Especificar conjunto de caracteres
Ejemplo
import java.nio.charset.StandardCharsets;
import java.util.List;
public class ReadFileWithCharset {
public static void main(String[] args) {
Path filePath = Paths.get("example.txt");
try {
List<String> lines = Files.readAllLines(filePath, StandardCharsets.UTF_8);
// Procesar el contenido del archivo
lines.forEach(System.out::println);
} catch (IOException e) {
System.err.println("Error al leer el archivo: " + e.getMessage());
}
}
}
Notas
- Tamaño del archivo: Este método lee todo el archivo en la memoria de una sola vez, por lo que no es adecuado para procesar archivos muy grandes (por ejemplo, archivos de más de unos cientos de MB)
- Codificación de caracteres: Asegúrese de usar el conjunto de caracteres correcto; de lo contrario, puede provocar caracteres ilegibles
- Final de línea: Diferentes sistemas operativos usan distintos finales de línea (Windows usa
\r\n, Unix/Linux usa\n), peroreadAllLines()manejará correctamente estas diferencias - Consideraciones de rendimiento: Para archivos grandes, considere usar
BufferedReaderylines()el método para procesamiento por flujo
Alternativas
Si necesita procesar archivos grandes, puede considerar los siguientes métodos alternativos:
Ejemplo
stream.forEach(System.out::println);
} catch (IOException e) {
e.printStackTrace();
}
Este método utiliza procesamiento por flujo y no carga todo el archivo en la memoria de una sola vez.
Resumen
Files.readAllLines()Es un método simple y fácil de usar, adecuado para leer archivos de texto pequeños. Proporciona una forma cómoda de obtener todo el contenido de líneas de un archivo, pero al procesar archivos grandes se debe prestar atención al consumo de memoria. Elegir el método de lectura de archivos adecuado según las necesidades reales puede mejorar en gran medida la eficiencia y la estabilidad del programa.
Java java.nio.file.Files