Autor
|
Tema: Guardar lineas de un archivo java en un vector (Leído 3,164 veces)
|
Panic0
Desconectado
Mensajes: 218
|
Hola todo como estan? Estaba haciendo un programa el cual consiste en leer un archivo y guardar las lineas leidas en un vector Hasta ahora tengo esto: package proyecto;
import java.io.*;
public class testing{ public static void checkArchivo() throws IOException { try { int tamanio = 0,pos = 0; String socio; File archivo = new File("socios.txt"); FileReader lector = new FileReader(archivo); BufferedReader lineas = new BufferedReader(lector); while((socio = lineas.readLine()) != null) { tamanio = tamanio + 1;
} String[] socios = new String[tamanio]; socio = lineas.readLine(); while((socio = lineas.readLine()) != null) { socios[pos++] = socio;
}
for(pos = 0;pos < tamanio; pos ++) { System.out.println(socios[pos]); }
} catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) throws IOException { checkArchivo(); } }
archivo 7399601,nombre,apellido,edad,cedula,direccion,telefono,ubicacion,cuota,tipo, 1893482,nombre,apellido,edad,cedula,direccion,telefono,ubicacion,cuota,tipo, 4659235,nombre,apellido,edad,cedula,direccion,telefono,ubicacion,cuota,tipo,
El problema es que al momento de imprimir el vector me sale todo como "null", alguien tiene una idea de lo que puede ser? Gracias!!
|
|
|
En línea
|
Los ataques de pánico suelen comenzar de forma súbita, sin advertencia.
|
|
|
BloodSharp
Desconectado
Mensajes: 814
¡ Hiperfoco !
|
Hola, el problema es que no retornás al inicio el BufferedReader por lo que va a seguir siendo nulo luego de contar las líneas. También deberías cerrar tanto el archivo de lector como el de líneas: lineas.mark(1); while((socio = lineas.readLine()) != null) { tamanio = tamanio + 1; } lineas.reset(); while((socio = lineas.readLine()) != null) { socios[pos++] = socio; } lineas.close(); lector.close();
B#
|
|
|
En línea
|
|
|
|
Panic0
Desconectado
Mensajes: 218
|
Hola, el problema es que no retornás al inicio el BufferedReader por lo que va a seguir siendo nulo luego de contar las líneas. También deberías cerrar tanto el archivo de lector como el de líneas: lineas.mark(1); while((socio = lineas.readLine()) != null) { tamanio = tamanio + 1; } lineas.reset(); while((socio = lineas.readLine()) != null) { socios[pos++] = socio; } lineas.close(); lector.close();
B# Hola, pibe! Gracias por responder, estuve probando el codigo pero de momento no me funciona mira, te dejo todo aca package proyecto;
import java.io.*;
public class testing{ public static void removeLineFromFile() { try { String socio; int tamanio = 0,pos = 0; File archivo = new File("socios.txt"); FileReader lector = new FileReader(archivo); BufferedReader lineas = new BufferedReader(lector); lineas.mark(1); while((socio = lineas.readLine()) != null) { tamanio = tamanio + 1; } lineas.reset(); String[] socios = new String[tamanio]; while((socio = lineas.readLine()) != null) { socios[pos++] = socio; System.out.print(socio); } lineas.close(); lector.close();
for(pos = 0;pos<tamanio;pos++) { System.out.println(socios[pos]); } }catch(IOException e) { e.printStackTrace(); } } public static void main(String[] args) { removeLineFromFile(); } } Espero que puedas ayudarme, gracias!!!
|
|
|
En línea
|
Los ataques de pánico suelen comenzar de forma súbita, sin advertencia.
|
|
|
K-YreX
Desconectado
Mensajes: 1.008
|
Echando un vistazo a la documentación de Java sobre el método BufferedReader.mark(int), se puede ver que el parámetro indica el número de caracteres que se pueden leer del stream mientras se sigue manteniendo la marca. Es decir, usando 'lines.mark(1)' se mantendrá la marca hasta que se lea el segundo carácter... Para que funcione, el número no puede ser menor al número de caracteres que tiene el fichero ya que tu propósito es leerlo entero. Creo que hay mejores opciones como: - Utilizar un ArrayList<String> para poder añadir líneas de forma dinámica sin tener que calcular antes el número de líneas.
- Utilizar Files.readAllLines() que directamente devuelve un ArrayList con todas las líneas del fichero.
Si necesitas guardar las líneas en un String[], siempre puedes convertir el ArrayList<String> a String[]
|
|
|
En línea
|
cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
guardar la informacion de un archivo de texto (dat) en una tabla o vector T[n]
Java
|
luis Tovar
|
3
|
5,080
|
30 Noviembre 2010, 19:40 pm
por joelmanx
|
|
|
Ayuda - Guardar un Arreglo (Vector) dentro de un Archivo TxT
Programación C/C++
|
alejandrosevenfold
|
2
|
9,501
|
1 Septiembre 2012, 18:40 pm
por rir3760
|
|
|
listar, guardar en base datos un archivo desde java
Java
|
washington8277
|
4
|
4,464
|
1 Febrero 2014, 14:48 pm
por washington8277
|
|
|
Como guardar arraylist en archivo de texto interno android java
Programación General
|
victor96
|
8
|
6,505
|
23 Noviembre 2018, 19:36 pm
por victor96
|
|
|
guardar un archivo en java
Java
|
Beginner Web
|
7
|
3,682
|
25 Noviembre 2019, 13:10 pm
por MetaNoia
|
|