elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Guardar lineas de un archivo java en un vector
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Guardar lineas de un archivo java en un vector  (Leído 3,164 veces)
Panic0

Desconectado Desconectado

Mensajes: 218



Ver Perfil
Guardar lineas de un archivo java en un vector
« en: 2 Noviembre 2022, 02:26 am »

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:
Código:
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
Código:
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 Desconectado

Mensajes: 814


¡ Hiperfoco !


Ver Perfil WWW
Re: Guardar lineas de un archivo java en un vector
« Respuesta #1 en: 2 Noviembre 2022, 04:34 am »

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:

Código
  1. FileReader lector = new FileReader(archivo);
  2. BufferedReader lineas = new BufferedReader(lector);
  3.  
  4. lineas.mark(1);
  5.  
  6. while((socio = lineas.readLine()) != null) {
  7. tamanio = tamanio + 1;
  8. }
  9.  
  10. lineas.reset();
  11.  
  12. String[] socios = new String[tamanio];
  13. while((socio = lineas.readLine()) != null) {
  14. socios[pos++] = socio;
  15. }
  16.  
  17. lineas.close();
  18. lector.close();


B#


En línea



Panic0

Desconectado Desconectado

Mensajes: 218



Ver Perfil
Re: Guardar lineas de un archivo java en un vector
« Respuesta #2 en: 2 Noviembre 2022, 23:26 pm »

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:

Código
  1. FileReader lector = new FileReader(archivo);
  2. BufferedReader lineas = new BufferedReader(lector);
  3.  
  4. lineas.mark(1);
  5.  
  6. while((socio = lineas.readLine()) != null) {
  7. tamanio = tamanio + 1;
  8. }
  9.  
  10. lineas.reset();
  11.  
  12. String[] socios = new String[tamanio];
  13. while((socio = lineas.readLine()) != null) {
  14. socios[pos++] = socio;
  15. }
  16.  
  17. lineas.close();
  18. lector.close();


B#


Hola, pibe!

Gracias por responder, estuve probando el codigo pero de momento no me funciona mira, te dejo todo aca

Código:
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 Desconectado

Mensajes: 1.008



Ver Perfil
Re: Guardar lineas de un archivo java en un vector
« Respuesta #3 en: 5 Noviembre 2022, 13:23 pm »

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

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines