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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Fichero De Datos POO.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Fichero De Datos POO.  (Leído 3,345 veces)
rokacasterli

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Fichero De Datos POO.
« en: 7 Mayo 2017, 13:53 pm »

Hola, buenas días, necesito saber si alguno de ustedes sabe, o tiene el código o alguna referencia que explique como introducir un los datos de los objetos desde un fichero, en este caso un .txt

Me explico, mi intención es 'crear' dichos objetos a partir de dicho fichero .txt.

En mi .txt tendré los parámetros de mi constructor principal algo como

Pepe Viñuelas Garcia;29;pepe@gmail.com;7788928-X
Pepe2 Viñuelas2 Garcia2;29;pepe2@gmail.com;7788929-X
Pepe3 Viñuelas3 Garcia2;29;pepe3@gmail.com;7788930-X
.
.etc

de forma que en un array de la clase ya definida 'Personas' con tamaño ya establecido, se introduzcan dichos datos.

¿Es posible realizar dicha tarea?

Saludos :)


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Fichero De Datos POO.
« Respuesta #1 en: 7 Mayo 2017, 15:23 pm »

Bueno, dudo que alguien te pueda ayudar si no especificas en qué lenguaje de programación estás trabajando.

Si no he entendido mal, tú tienes un archivo delmitado por comas (o CSV) y quieres hallar una forma de poder representar la información de cada linea del archivo mediante objetos.

Bien, una forma rudimentaria de hacerlo sería leer el archivo y partir cada linea individual usando el caracter delimitador, y de este modo obtener un Array con los campos que poder pasarle al constructor de un tipo. Una forma más sofisticada y óptima (según las circunstancias) podría ser mediante la serialización/deserialización de objetos (siempre que el lenguaje que estés utilizando provea esta funcionalidad), de esta forma podrías traducir/convertir el contenido de un archivo, a un tipo específico, y viceversa.

¡Saludos!


« Última modificación: 7 Mayo 2017, 15:26 pm por Eleкtro » En línea



rokacasterli

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Fichero De Datos POO.
« Respuesta #2 en: 7 Mayo 2017, 16:16 pm »

Si, es cierto perdón. Estoy trabajando con Java, JDK 1.7.
''Si no he entendido mal, tú tienes un archivo delmitado por comas (o CSV) y quieres hallar una forma de poder representar la información de cada linea del archivo mediante objetos.'' Así es correcto en concreto un tipo .txt en el de 'algún modo que desconozco', introducir dicho datos pero en un array. Para ser más concreto mi intención es hacer algo así pero con un array de objetos donde en vez de Productos, sean Productos[], pero no sé como hacerlo.

Código
  1. public static void main(String[] args) throws IOException {
  2.        Productos producto1;
  3.  
  4.        try{
  5.            BufferedReader entrada=new BufferedReader(new FileReader("datos.txt"));
  6.            String linea;
  7.            entrada.readLine();
  8.            String Denominación="";
  9.            String CódigoÚnico="";
  10.  
  11.            while((linea=entrada.readLine())!=null){
  12.                StringTokenizer str=new StringTokenizer(linea,";");
  13.                Denominación = str.nextToken();
  14.                CódigoÚnico =str.nextToken();}
  15.  
  16.  
  17.  
  18.  
  19.           if(entrada!=null){
  20.               entrada.close();
  21.           }
  22.           producto1=new Productos(Denominación,CódigoÚnico);
  23.  
  24.           System.out.println(producto1);
  25.        }
  26.        catch(FileNotFoundException ex){
  27.          System.out.println("No exite el fichero indicado.");
  28.        }
  29.        catch(IOException ex){
  30.            System.out.println("Error en E/S");
  31.            ex.printStackTrace();
  32.        }
  33.  
  34.    }}

Saludos :)
En línea

cunian

Desconectado Desconectado

Mensajes: 10


Sin lógica no hay paraíso.


Ver Perfil
Re: Fichero De Datos POO.
« Respuesta #3 en: 7 Mayo 2017, 19:20 pm »

Hola amigo, y si cargas todos los objetos del .txt a un contenedor. un Arraylist o un LinkedList.

Código
  1. public static void main(String[] args) throws IOException {
  2.         //SE CREA ARRAYLIST
  3.        LinkedList<productos> lista_productos = new LinkedList<>();
  4.  
  5.        try {
  6.            BufferedReader entrada = new BufferedReader(new FileReader("datos.txt"));
  7.            String linea;
  8.            entrada.readLine();
  9.            String Denominacion = "";
  10.            String CodigoUnico = "";
  11.  
  12.            while ((linea = entrada.readLine()) != null) {
  13.                StringTokenizer str = new StringTokenizer(linea, ";");
  14.                Denominacion = str.nextToken();
  15.                CodigoUnico = str.nextToken();
  16.               //SE INSERTA UN OBJETO AL CONTENEDOR
  17.                lista_productos.add(new productos(Denominacion, CodigoUnico));
  18.            }
  19.  
  20.            if (entrada != null) {
  21.                entrada.close();
  22.            }
  23.  
  24.  
  25.  
  26.  
  27.  
  28.        } catch (FileNotFoundException ex) {
  29.            System.out.println("No exite el fichero indicado.");
  30.        } catch (IOException ex) {
  31.            System.out.println("Error en E/S");
  32.            ex.printStackTrace();
  33.        }
  34.  
  35.    }
« Última modificación: 7 Mayo 2017, 19:24 pm por cunian » En línea

3n31ch


Desconectado Desconectado

Mensajes: 445


Grandes conocimientos engendran grandes dudas


Ver Perfil
Re: Fichero De Datos POO.
« Respuesta #4 en: 7 Mayo 2017, 20:32 pm »

Entiendo que quieres algo como esto:

Código
  1. public static void main(String[] args) throws FileNotFoundException, IOException {
  2.        ArrayList<Employee> employees = new ArrayList<>(); // ACA CREO EL ARRAY DE OBJETOS
  3.        // INICIO: LEER FICHERO
  4.        String path = "C:\\Users\\Nacho\\Desktop\\employees.txt";
  5.        FileReader fr = new FileReader(path);
  6.        BufferedReader br = new BufferedReader(fr);
  7.        // FIN: LEER FICHERO
  8.        // INICIO: RECORRER FICHERO
  9.        String line;
  10.        String[] attr; // ACA SE GUARDARA EL ARRAY DE ATRIBUTOS
  11.        while((line = br.readLine()) != null) {
  12.            attr = line.split(";"); // ACA SE GENERA EL ARRAY DE ATRIBUTOS
  13.            employees.add(new Employee(attr[0], attr[1])); // ACA SE CREA EL OBJETO
  14.        }
  15.        br.close();
  16.        // FIN: RECORRER FICHERO
  17.        for(Employee employee : employees) System.out.println(employee); // ACA SE LEE EL ARRAY DE OBJETOS
  18.    }

(Ojo, la ultima linea lee el objeto directamente, para eso hice un override de toString en Employee)


Eso segun yo es la forma mas simple sin tener que acudir a clases poco comunes de java. Si vez lo unico que se usa es ArrayList, FileReader y BufferedReader.

Otra forma seria usar Scanner:
Código
  1. public static void main(String[] args) throws FileNotFoundException, IOException {
  2.        ArrayList<Employee> employees = new ArrayList<>(); // ACA CREO EL ARRAY DE OBJETOS
  3.        Scanner scanner = new Scanner(new File("C:\\Users\\Nacho\\Desktop\\employees.txt"));// LEO FICHERO
  4.        scanner.useDelimiter("\n"); // SEPARO FICHERO
  5.        String[] attr;
  6.        while(scanner.hasNext()) { // RECORRO FICHERO
  7.            attr = scanner.next().split(";"); // GENERO ARREGLO DE ATRIBUTOS
  8.            employees.add(new Employee(attr[0], attr[1])); // AÑADO OBJETO
  9.        }
  10.        for(Employee employee : employees) System.out.println(employee); // ACA SE LEE EL ARRAY DE OBJETOS
  11.    }
« Última modificación: 7 Mayo 2017, 20:42 pm por 3n31ch » En línea

rokacasterli

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Fichero De Datos POO.
« Respuesta #5 en: 9 Mayo 2017, 17:27 pm »

Muchas gracias por la ayuda, puedes explicarme qué hace esta sintaxis
Código
  1. for(Productos employee : employees) System.out.println(employee);


Saludos!
En línea

3n31ch


Desconectado Desconectado

Mensajes: 445


Grandes conocimientos engendran grandes dudas


Ver Perfil
Re: Fichero De Datos POO.
« Respuesta #6 en: 9 Mayo 2017, 19:04 pm »

Muchas gracias por la ayuda, puedes explicarme qué hace esta sintaxis
Código
  1. for(Productos employee : employees) System.out.println(employee);


Saludos!

Eso es un foreach, recorre un arreglo uno por uno:

Si tienes un arrayList de productos llamado: productos y quieres recorrerlo uno por uno haces lo siguiente:

for(Producto producto : productos) {
     System.out.println(producto.getNombre());
}

El azul seria el Tipo de ArrayList o mas bien la Clase de los objetos que contiene.
El verde seria la variable temporal que tendra cada producto cuando se itere sobre el
El rojo es la lista de productos sobre la cual iteras
En línea

rokacasterli

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Fichero De Datos POO.
« Respuesta #7 en: 10 Mayo 2017, 23:40 pm »

Vale, muchas gracias.

Otra duda, para convertir un booleano a String, de manera que desde un archivo pueda leer dicho atributo boolean, ¿cómo es la mejor manera de recoger dicha información?
En línea

3n31ch


Desconectado Desconectado

Mensajes: 445


Grandes conocimientos engendran grandes dudas


Ver Perfil
Re: Fichero De Datos POO.
« Respuesta #8 en: 11 Mayo 2017, 01:36 am »

ponlo como 1 o como 0, si es 0 es false, si es 1 es true.

Luego haces lo siguiente:

Código
  1.       String input = "1";
  2.       boolean bool = input.equals("1");

Seguramente existen mas formas, pero esa se me ocurre por le momento.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
comparar y eliminar datos de un fichero
PHP
Roc668 1 3,304 Último mensaje 13 Diciembre 2009, 17:43 pm
por Maox
Introducir datos de un fichero en una tabla
Programación C/C++
HIPOCROFILO 4 3,667 Último mensaje 16 Octubre 2010, 15:29 pm
por do-while
Guardar datos en Un Fichero
Programación C/C++
mapers 1 2,448 Último mensaje 5 Abril 2011, 23:22 pm
por Akai
Almacenar datos de un fichero en una estructura
Programación C/C++
moralescmj 4 2,613 Último mensaje 26 Enero 2014, 15:30 pm
por moralescmj
MOVIDO: Fichero De Datos POO.
Programación General
Eleкtro 0 1,885 Último mensaje 7 Mayo 2017, 16:26 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines