lectura archivos txt
Publicado por Alba (4 intervenciones) el 13/06/2021 11:55:49
Necesito saber como leer un archivo .txt en java y que me lo muestre en una interfaz
Valora esta pregunta
0
public static int contarlineas(String ruta) {
int lineas = 0;
File fichero = new File(ruta);
try {
Scanner sc = new Scanner(fichero);
while (sc.hasNextLine()) {
sc.nextLine();
lineas++;
}
sc.close();
} catch (FileNotFoundException e) {
// e.printStackTrace();
System.out.println("ERROR: No se puede abrir el fichero.");
}
return lineas;
}
public static int contarcolumnas (String ruta) {
int columnas = 0;
String fila = "0";
File Ficherolaberinto= new File(ruta);
try {
Scanner sc = new Scanner(Ficherolaberinto);
// Bucle while para coger una linea
while (sc.hasNextLine()) {
fila = sc.nextLine();
}
sc.close();
} catch (FileNotFoundException e) {
// e.printStackTrace();
System.out.println("ERROR: No se puede abrir el fichero.");
}
columnas = fila.split(";").length;
return columnas;
}
public static String[][] importar_datos (String ruta) {
// Inicializamos el array
String[][] datos = {};
// Pasamos las líneas del fichero al array
File fichero = new File(ruta);
try {
Scanner sc = new Scanner(fichero);
// Instanciamos el array
datos = new String[contarlineas(ruta)][contarcolumnas(ruta)];
// Inicialización
int i = 0;
String fila = "0";
String[] array_fila = {};
while (sc.hasNextLine()) {
// Cogemos una fila y la insertamos en un array
fila = sc.nextLine();
array_fila = fila.split(";");
// Pasamos la información del array de fila
for (int j = 0; j < array_fila.length; j++) {
datos[i][j] = array_fila[j];
}
i++;
}
sc.close();
} catch (FileNotFoundException e) {
// e.printStackTrace();
System.out.println("ERROR: No se puede abrir el fichero.");
}
return datos;
}
public void crearLaberinto (int anchoLaberinto){
this.anchoLaberinto = anchoLaberinto;
maze = importar_datos("Laberinto");
public void mostrarLaberinto(){
for (int f=0; f<maze.length; f++) {
for (int c=0; c<maze[f].length; c++) {
System.out.print(maze [f][c]);
}
System.out.println();
}
}
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class LectorTXT {
public static ArrayList<String> leerTXT(String rutaFichero) {
//Aquí guardaremos las lineas leidas en el archivo txt
ArrayList<String> lineas = new ArrayList<String>();
try {
BufferedReader lector = new BufferedReader(new FileReader(rutaFichero));
//Leemos primera linea
String linea = lector.readLine();
while (linea != null) { //Mientras hayan lineas para leer...
lineas.add(linea); //Añadimos linea leida al ArrayList
linea = lector.readLine(); //Leemos la siguiente línea
}
//Ya no quedan lineas por leer
lector.close(); //Cerramos lector
return lineas; //Retornamos el ArrayList leido
} catch (FileNotFoundException e) {
System.out.println("No se encuentra fichero:\n" + rutaFichero);
return null;
} catch (IOException e) {
System.out.println("Error accediendo a:\n" + rutaFichero);
return null;
}
}
}
import java.util.ArrayList;
public class PruebaLector {
public static void main(String[] args) {
//Pedimos a nuesta clase lectora que nos lea un texto.
ArrayList<String> texto = LectorTXT.leerTXT("d:/machado.txt");
//Mostramos en pantalla el texto leído
if (texto == null)
System.out.println("No pudo leer el archivo de texto");
else {
System.out.println("Texto leído:\n");
for (String linea: texto)
System.out.println("\t" + linea);
}
}
}
Texto leído:
Anoche cuando dormía
soñé, ¡bendita ilusión!,
que una fontana fluía
dentro de mi corazón.
Di, ¿por qué acequia escondida,
agua, vienes hasta mí,
manantial de nueva vida
de donde nunca bebí?
Anoche cuando dormía
soñé, ¡bendita ilusión!,
que una colmena tenía
dentro de mi corazón;
y las doradas abejas
iban fabricando en él,
con las amarguras viejas
blanca cera y dulce miel.
Anoche cuando dormía
soñé, ¡bendita ilusión!,
que un ardiente sol lucía
dentro de mi corazón.
Era ardiente porque daba
calores de rojo hogar,
y era sol porque alumbraba
y porque hacía llorar.
Anoche cuando dormía
soñé, ¡bendita ilusión!,
que era Dios lo que tenía
dentro de mi corazón.
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.border.BevelBorder;
public class LectorSwing extends JFrame{
private JButton btElegir;
private JButton btLeer;
private JTextField jtRuta;
private JTextArea areaTexto;
//Constructor del JFrame
public LectorSwing() {
iniciarComponentes();
//Panel superior con campo de texto y botones
JPanel pnNorte = new JPanel();
pnNorte.setLayout(new BoxLayout(pnNorte, BoxLayout.Y_AXIS));
JPanel pnElegir = new JPanel();
pnElegir.add(new JLabel("Indique ruta del fichero: "));
pnElegir.add(jtRuta);
pnElegir.add(btElegir);
JPanel pnLeer = new JPanel();
pnLeer.add(btLeer);
pnNorte.add(pnElegir);
pnNorte.add(new JSeparator(SwingConstants.HORIZONTAL));
pnNorte.add(pnLeer);
pnNorte.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createEmptyBorder(15, 15, 15, 15),
BorderFactory.createRaisedSoftBevelBorder()));
//Panel central con el area de texto
JPanel pnCentro = new JPanel();
JScrollPane sp = new JScrollPane(areaTexto); //Proporciona al area de texto barras de scroll
sp.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
pnCentro.add(sp);
//Configuracion del JFrame
setLayout(new BorderLayout());
add(pnNorte, BorderLayout.NORTH);
add(pnCentro, BorderLayout.CENTER);
setTitle("Lector TXT");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
private void iniciarComponentes() {
btElegir = new JButton("Seleccionar");
btLeer = new JButton("Leer TXT");
jtRuta = new JTextField(15);
jtRuta.setToolTipText("Ruta del archivo a leer");
areaTexto = new JTextArea(15, 40);
areaTexto.setEditable(false);
}
//Método main para poner en marcha el programa
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new LectorSwing();
}
});
}
}
private class AccionElegirFichero implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
//Abrimos ventana para seleccionar fichero
JFileChooser selector = new JFileChooser();
selector.showOpenDialog(null);
String ruta = selector.getSelectedFile().getAbsolutePath();
jtRuta.setText(ruta); //Mostramos la ruta del archivo escogido
}
}
private class AccionLeerTXT implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String ruta = jtRuta.getText(); //Recogemos ruta de fichero escogido
//Comprobamos que no esté en blanco
if (ruta.isBlank())
JOptionPane.showMessageDialog(null, "Escoja una ruta", "Leer TXT",
JOptionPane.WARNING_MESSAGE);
else {
//La clase LectorTXT nos proprocionará un ArrayList con el texto leido
ArrayList<String> texto = LectorTXT.leerTXT(ruta);
if (texto == null)
JOptionPane.showMessageDialog(null, "No se pudo leer el fichero escogido", "Leer TXT",
JOptionPane.ERROR_MESSAGE);
else {
//Transferimos las lineas leidas, al area de texto
for (String linea: texto)
areaTexto.append(linea + "\n");
}
}
}
}
private void iniciarComponentes() {
btElegir = new JButton("Seleccionar");
btElegir.addActionListener(new AccionElegirFichero());
btLeer = new JButton("Leer TXT");
btLeer.addActionListener(new AccionLeerTXT());
jtRuta = new JTextField(15);
jtRuta.setToolTipText("Ruta del archivo a leer");
areaTexto = new JTextArea(15, 40);
areaTexto.setEditable(false);
}
jTextArea ta = ...
String fileName = ...
ta.read(new FileReader(fileName), fileName);