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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  guardar objecto en fichero
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: guardar objecto en fichero  (Leído 6,744 veces)
betikano

Desconectado Desconectado

Mensajes: 16


Ver Perfil
guardar objecto en fichero
« en: 18 Mayo 2014, 19:20 pm »

Hola, se puede guardar un objecto en un fichero sin utilizar los metodos serializacion? ya que si los guardo con

BufferedWriter Fescribe=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file,true), "utf-8"));

el resultado en el archivo es:

DirectoryPackage.DirectoryPRAC5@128c5c03

cuando yo he guardado un Objecto del tipo: Apellido1,Apellido2,Nombre

gracias de antemano.


« Última modificación: 20 Mayo 2014, 01:02 am por #!drvy » En línea

juanxo1988

Desconectado Desconectado

Mensajes: 11



Ver Perfil
Re: guardar objecto en fichero
« Respuesta #1 en: 18 Mayo 2014, 19:55 pm »

Hola Betikano,

Creo que para que un objeto pueda ser almacenado en disco duro, en un fichero por ejemplo, se ha de implementar la interfaz serializable por narices. Al menos es el único método que he usado yo por ahora para trabajar con objetos en ficheros.

Aquí te paso un link:
http://www.chuidiang.com/java/ficheros/ObjetosFichero.php


En línea

betikano

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: guardar objecto en fichero
« Respuesta #2 en: 18 Mayo 2014, 23:27 pm »

Hola Betikano,

Creo que para que un objeto pueda ser almacenado en disco duro, en un fichero por ejemplo, se ha de implementar la interfaz serializable por narices. Al menos es el único método que he usado yo por ahora para trabajar con objetos en ficheros.

Aquí te paso un link:
http://www.chuidiang.com/java/ficheros/ObjetosFichero.php

En principio no puedo implementar nada mas ya que me dan la clase predefinida:

public class DirectoryPRAC5 implements Directory {
...
...
}

y para hacer la carga y descarga no puedo utilizar mecanismos de serialización.

public static DirectoryPRAC5 load(File file) {} //metodo cargar
public static boolean save(File file, DirectoryPRAC5 directory) {} //metodo descargar/guardar
En línea

Chuidiang

Desconectado Desconectado

Mensajes: 161



Ver Perfil WWW
Re: guardar objecto en fichero
« Respuesta #3 en: 19 Mayo 2014, 00:00 am »

Echa un ojo a esta librería GSON https://code.google.com/p/google-gson/

Es capaz de convertir un objeto java en un string json y viceversa, puede ser una alternativa a guardar y recuperar objetos de un fichero. Basta con convertir el objeto a string json y guardarlo en el fichero.

Otra opción es hacerlo a mano, guardando en un formto que te inventes cada objeto, atributo a atributo.

Se bueno.
En línea

betikano

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: guardar objecto en fichero
« Respuesta #4 en: 19 Mayo 2014, 18:18 pm »

Echa un ojo a esta librería GSON https://code.google.com/p/google-gson/

Es capaz de convertir un objeto java en un string json y viceversa, puede ser una alternativa a guardar y recuperar objetos de un fichero. Basta con convertir el objeto a string json y guardarlo en el fichero.

Otra opción es hacerlo a mano, guardando en un formto que te inventes cada objeto, atributo a atributo.

Se bueno.

Hola Betikano,

Creo que para que un objeto pueda ser almacenado en disco duro, en un fichero por ejemplo, se ha de implementar la interfaz serializable por narices. Al menos es el único método que he usado yo por ahora para trabajar con objetos en ficheros.

Aquí te paso un link:
http://www.chuidiang.com/java/ficheros/ObjetosFichero.php

Aclarado el tema, no puedo utlizar ninguna otra interfaz ni metodo que trate con objectos.

Me dan un almacen de objetos de la clase DirectoryItem y tengo que hacer la carga y descarga con :

public static DirectoryPRAC5 load(File file) {

DirectoryPRAC5 resultat = new DirectoryPRAC5();

....
...
...
return resultat;
}

public static boolean save(File file, DirectoryPRAC5 directory) { }

el problema que tengo es que al hacer el metodo save me guarda en el archivo DirectoryPackage.DirectoryPRAC5@76c511b y no el contenido del directorio por ejemplo:

Antonio
Lopez
Castillo
980987234
antonio@gmail.com


la classe DirectoryItem es:

public class DirectoryItem implements Comparable {

private String name, surname1, surname2;
private Set<Long> telephones;
private Set<String> emails;

public DirectoryItem (String name, String surname1) {

if (name==null || surname1==null)
    throw new IllegalArgumentException("null values not admitted");
if (name.trim().equals("") || surname1.trim().equals(""))
    throw new IllegalArgumentException("empty or blank strings not admitted");

this.name=name.toUpperCase();
this.surname1=surname1.toUpperCase();
this.surname2=null;
this.telephones = new TreeSet<Long>();
this.emails = new TreeSet<String>();
}

public DirectoryItem (String name, String surname1, String surname2) {

this(name, surname1);
if (surname2!=null) {
if (surname2.trim().equals(""))
   throw new IllegalArgumentException("empty or blank strings not admitted");
this.surname2 = surname2.toUpperCase(); }
}
 ...
// beware, these get methods return a copy not the attributes themselves
public Collection<Long> getTelephones () {return new TreeSet(this.telephones);} public Collection<String> getEmails () {return new TreeSet(this.emails);}

...

protected boolean addTelephone(long telephone) {
// ull! wrapping automatic de telefon (de long a Long)

return this.telephones.add(telephone);
}

protected boolean addEmail (String email) {
    return this.emails.add(email);
}
protected boolean removeTelephone (long telephone) { return this.telephones.remove(telephone);
}
protected boolean removeEmail (String email) { return this.emails.remove(email);
}
...
En línea

Chuidiang

Desconectado Desconectado

Mensajes: 161



Ver Perfil WWW
Re: guardar objecto en fichero
« Respuesta #5 en: 19 Mayo 2014, 20:53 pm »

Hola:

¿Y como haces el save?.

Lo que estás guardando es la "dirección de memoria" (aunque en java dicen que no existe) donde está almacenado el objeto y que es lo que devuelve por defecto el método toString() de Object.

Si no puedes usar una librería adicional como gson que no interfiere en absoluto con tu objeto ni las interfaces para salvarlo, no te queda más remedio que ir llamando uno a uno a todos los métodos get de tu clase hasta obtener tipos "primitivos" como int, String, double, boolean, y guardar uno a uno todos ellos.

Se bueno.
En línea

betikano

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: guardar objecto en fichero
« Respuesta #6 en: 19 Mayo 2014, 21:00 pm »

Hola:

¿Y como haces el save?.

Lo que estás guardando es la "dirección de memoria" (aunque en java dicen que no existe) donde está almacenado el objeto y que es lo que devuelve por defecto el método toString() de Object.

Si no puedes usar una librería adicional como gson que no interfiere en absoluto con tu objeto ni las interfaces para salvarlo, no te queda más remedio que ir llamando uno a uno a todos los métodos get de tu clase hasta obtener tipos "primitivos" como int, String, double, boolean, y guardar uno a uno todos ellos.

Se bueno.

    public static boolean save(File file, DirectoryPRAC5 directory) {

BufferedWriter Fescribe=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file,true), "utf-8")); 
         
              Fescribe.write(directory + "\r\n"); 
             
              //Cierra el flujo de escritura 
              Fescribe.close(); 
              return true;
}
En línea

Chuidiang

Desconectado Desconectado

Mensajes: 161



Ver Perfil WWW
Re: guardar objecto en fichero
« Respuesta #7 en: 19 Mayo 2014, 22:27 pm »

Pues lo dicho,

Código:
Fescribe.write(directory + "\r\n");

está llamando a directory.toString() para salvar la clase y toString(), por defecto, devuelve una especie de dirección de memoria ( tu DirectoryPackage.DirectoryPRAC5@76c511b )

Define en esa clase un método toString() sobreescribiendo el de Object y devuevle ahí el String que tú quieras meter en el fichero.

Se bueno.
En línea

betikano

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: guardar objecto en fichero
« Respuesta #8 en: 19 Mayo 2014, 22:47 pm »

Pues lo dicho,

Código:
Fescribe.write(directory + "\r\n");

está llamando a directory.toString() para salvar la clase y toString(), por defecto, devuelve una especie de dirección de memoria ( tu DirectoryPackage.DirectoryPRAC5@76c511b )

Define en esa clase un método toString() sobreescribiendo el de Object y devuevle ahí el String que tú quieras meter en el fichero.

Se bueno.

en esta clase no me deja crear/sobreescribir nada, en principio debería escribirlo bien en el archivo tal y como me dan el toString()
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: guardar objecto en fichero
« Respuesta #9 en: 19 Mayo 2014, 22:50 pm »

Quizás lo que busques sea, en vez de hacer "Fescribe.write(directory + "\r\n");", ir metiendo cada elemento de el objeto, llamando a sus getters. No se cómo es el objeto, pero un ejemplo:

Código
  1. Fescribe.write(directory.getName() + "\r\n");
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Guardar fichero de texto
Programación Visual Basic
BenRu 6 2,723 Último mensaje 20 Junio 2007, 21:59 pm
por BenRu
como guardar en una variable una linea de un fichero « 1 2 »
Programación Visual Basic
CICOLO_111234 10 4,441 Último mensaje 14 Septiembre 2008, 04:42 am
por cassiani
Guardar datos en Un Fichero
Programación C/C++
mapers 1 2,237 Último mensaje 5 Abril 2011, 23:22 pm
por Akai
Leer fichero y guardar en variables
Programación C/C++
Joaqqinn 6 4,709 Último mensaje 13 Enero 2016, 23:43 pm
por Orubatosu
[c++]Guardar y cargar datos de un fichero .txt
Programación C/C++
lordluisiv 4 5,392 Último mensaje 28 Marzo 2019, 22:18 pm
por lordluisiv
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines