Foro de elhacker.net

Programación => Java => Mensaje iniciado por: pedriques en 25 Mayo 2011, 22:26 pm



Título: Un programa que lea un archivo .txt y que guarde en variables lo leido
Publicado por: pedriques en 25 Mayo 2011, 22:26 pm
Como puedo hacer un programa en java que lea un archivo de texto con numeros y guardar cada numero en una variable diferente separados los numeros por "|" ejemplo:

1|2|3|3
33|23|4|5

Gracias


Título: Re: Un programa que lea un archivo .txt y que guarde en variables lo leido
Publicado por: Castiblanco en 25 Mayo 2011, 22:38 pm
Para leer el archivo:

:http://chuwiki.chuidiang.org/index.php?title=Lectura_y_Escritura_de_Ficheros_en_Java

Y lo otro, lo de separarlo con StringTokenizer :)

Saludos...


Título: Re: Un programa que lea un archivo .txt y que guarde en variables lo leido
Publicado por: pedriques en 25 Mayo 2011, 22:42 pm
podrias explicarme como lo aplico en mi codigo? es que mira yo ya tengo el codigo y este codigo que te mostrare ya lee lo que esta en el archivo de texto, ahora quiero guardar esos numeritos en varias variables. Gracias

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;


public class ExcepcionArchivo {

private String rutaArchivo;
private String linea;

public ExcepcionArchivo(){
this.rutaArchivo="c:/archivo.txt";
}

public void leerArchivo(){
try{
FileReader fr=new FileReader(rutaArchivo);
BufferedReader entradaArchivo=new BufferedReader(fr);
linea=entradaArchivo.readLine();
while (linea != null) {
System.out.println(linea);
linea=entradaArchivo.readLine();
}
}catch(IOException ex){
System.out.println("Error en la apertura del archivo "+ex.toString());
}

}
public static void main(String[] args) {
ExcepcionArchivo ea=new ExcepcionArchivo();
ea.leerArchivo();
}
}


Título: Re: Un programa que lea un archivo .txt y que guarde en variables lo leido
Publicado por: ShotgunLogic en 25 Mayo 2011, 23:24 pm
Pista: Usa split para los Strings separarlos como tu quieras, en Oracle hay mas info :laugh:


Título: Re: Un programa que lea un archivo .txt y que guarde en variables lo leido
Publicado por: Castiblanco en 25 Mayo 2011, 23:43 pm
No me gusta modificar lo de otros ^^, aquí hice un ejemplo que explica cómo se hace.

Código
  1. import java.util.StringTokenizer;
  2.  
  3. public class tokens {
  4.  
  5. public static void main(String[] args) {
  6. String numeros = "1-2-3-4-5";
  7. int[] arreglo = new int[5];
  8.  
  9. StringTokenizer aaaaa = new StringTokenizer(numeros, "-");
  10. int numeroTokens = aaaaa.countTokens();
  11.  
  12. for(int i =0; i<numeroTokens;i++)
  13. {
  14. arreglo[i]= Integer.parseInt(aaaaa.nextToken());
  15. }
  16.  
  17. for(int i =0; i<numeroTokens;i++)
  18. {
  19. System.out.println(arreglo[i]);
  20. }
  21.  
  22. }
  23.  
  24. }
  25.  

Me avisas si no entiendes.


Título: Re: Un programa que lea un archivo .txt y que guarde en variables lo leido
Publicado por: pedriques en 26 Mayo 2011, 14:23 pm
hola gracias por el codigo, pero no entendi muy bien, es que no se si en realidad puedo guardar los datos en la variable leyendolos uno por uno? por ejemplo qusiiera que el programa guardara automaticamente el numero -33 en a, el 2 en b y los demas en sus respectivas posiciones... a b c d e f g h i f .. Para posteriormente realizar calculos, por ejemplo: a * b + c + e - f... para realizar calculos. Gracias.


Título: Re: Un programa que lea un archivo .txt y que guarde en variables lo leido
Publicado por: Castiblanco en 26 Mayo 2011, 14:42 pm
Mira, mejor armas un arreglo como lo hice yo, porque igual para que exista "a" TIENES que declarar esa variable y entonces te tocaría declarar todo el abecedario, mejor te creas un arreglo:

Código
  1. int[] arreglo = new int[5];

En este caso de enteros de 5 posiciones o de las que quieras, ahora en vez de a tienes arreglo[0], en vez de b tienes arreglo[1] y así...

Entonces eso es lo que hago en el for:

Código
  1. for(int i =0; i<numeroTokens;i++)
  2. {
  3. arreglo[i]= Integer.parseInt(aaaaa.nextToken());
  4. }

Simplemente ir recorriendo el arreglo y llenándolo con los números.

Saludos...


Título: Re: Un programa que lea un archivo .txt y que guarde en variables lo leido
Publicado por: pedriques en 26 Mayo 2011, 15:48 pm
gracias de verdad, voy a implementarlo, te pregunto una cosa mas, como hago para implementarlo por que yo tengo un archivo de texto en el cual adentro tiene escrito una matriz 4x4 por separadores que hablamos anteriormente, como hago para que java pueda extraer el contenido de esa matriz e ir llenandola en las variables?. Gracias.


Título: Re: Un programa que lea un archivo .txt y que guarde en variables lo leido
Publicado por: Castiblanco en 26 Mayo 2011, 22:33 pm
Haz las cosas por partes (divide y vencerás xD), primero que tu trabajo se centre en obtener lo que está en el archivo y guardarlo en un String o en varios o en un arreglo de String, como te quede más cómodo, después de eso ya "implementas" eso de los tokens.

Saludos...


Título: Re: Un programa que lea un archivo .txt y que guarde en variables lo leido
Publicado por: kiriost en 28 Mayo 2011, 22:24 pm
Para separar los String te conviene utilizar "split". Buscá en Google ;)

http://www.google.com.ar/#hl=es-419&safe=off&q=java+string+split&aq=f&aqi=&aql=&oq=&bav=on.2,or.r_gc.r_pw.&fp=f7e924a7ef8bc28a&biw=1022&bih=607 (http://www.google.com.ar/#hl=es-419&safe=off&q=java+string+split&aq=f&aqi=&aql=&oq=&bav=on.2,or.r_gc.r_pw.&fp=f7e924a7ef8bc28a&biw=1022&bih=607)


Título: Re: Un programa que lea un archivo .txt y que guarde en variables lo leido
Publicado por: klaine en 28 Mayo 2011, 23:20 pm
Para leer un archivo:

BufferedReader b = new BufferedReader(new FileReader(new File("ruta")));

Con b.readline lees cada linea del archivo, te devolverá null cuando no haya más que leer, para dividir:

String[] div = variable.split("|");

Despues recorres cada variable de ese arreglo, investiga como usar un for each.

Si quieres ese arreglo como numeros crea un arreglo int del mismo largo que la cadena dividida:

int[] arr=new int[div.length];

luego metes el contenido de div en el arreglo de enteros parseandolo:
te dejo un ejemplo del for each
Código
  1. int x=0;
  2.  
  3. for(String valor:div){
  4.  
  5. arr[x] = Integer.parseInt(valor);
  6. x++;
  7.  
  8. }
  9.  

Saludos  ;)