Java - Problema o duda con Writeobject

   
Vista:

Problema o duda con Writeobject

Publicado por Francisco Javier (17 intervenciones) el 28/06/2013 14:31:33
Hola,
Al pasar el contenido de un array a un fichero con el metodo writeobject, en el fichero aparecen muchos caracteres extraños y al final aparece lo que he introducido. ¿Se puede quitar esa "morralla" y que en el fichero aparezca solo lo que deseo?

1
2
3
4
for(int i=0;i<=array.length;i++){
            escritura.writeObject("i"); //si pongo escritura.writeObject(array[i]); me da error y tampoco se el porque
        }
        escritura.close();

Muchas gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema o duda con Writeobject

Publicado por Diego (28 intervenciones) el 28/06/2013 19:39:09
Hola Francisco,

El método writeobject() escribe la estructura del objeto, por eso te aparece esos "caracteres extraños". Para que te escriba los atributos del objeto, es decir, los datos primitivos, tienes que utilizar http://docs.oracle.com/javase/1.4.2/docs/api/java/io/DataOutputStream.html

Espero que te sirva,

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema o duda con Writeobject

Publicado por Renzo nevermindman@gmail.com (125 intervenciones) el 29/06/2013 06:51:33
Hola,
te dejo un demo que espero te sirva para resolver tu duda:

---------------------------------------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package xx;
 
import java.util.ArrayList;
 
public class Demo7 {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ArrayList<Persona> arreglo = new ArrayList<Demo7.Persona>(3);
		//arreglo.add(this.new Demo7.Persona("Juan",4));
		Demo7 y=new Demo7();
		y.agrega(arreglo,"Juan",4);
		y.agrega(arreglo,"Miguel",2);
		y.agrega(arreglo,"Carlos",7);
 
		System.out.println(arreglo);
		System.out.println(arreglo.get(0));
		System.out.println(arreglo.get(0).getStrNombre());
	}
 
	public void agrega(ArrayList<Persona> arreglo,String s,int i){
		arreglo.add(this.new Persona(s,i));
	}
 
	public class Persona{
 
		String strNombre;
		int intEdad;
		public Persona(String strNombre,int intEdad){
			this.strNombre=strNombre;
			this.intEdad=intEdad;
		}
		public String getStrNombre() {
			return strNombre;
		}
		public void setStrNombre(String strNombre) {
			this.strNombre = strNombre;
		}
		public int getIntEdad() {
			return intEdad;
		}
		public void setIntEdad(int intEdad) {
			this.intEdad = intEdad;
		}
	}
 
}

---------------------------------------
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema o duda con Writeobject

Publicado por Francisco Javier (17 intervenciones) el 01/07/2013 13:11:14
Me temo que tengo que utilizar WriteObject porque el array lo tengo en otra clase distinta y lo paso por referencia en el método. Pongo parte del código por si ayuda a aclarar las cosas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class EscrituraLecturadeObjetosMultimedia implements Serializable{
    private FileOutputStream fileOutputStream;
    private FileInputStream fileInputStream;
    private ObjectOutputStream escritura;
    private ObjectInputStream lectura;
    private String archivo;
 
    //CONSTRUCTOR
    public EscrituraLecturadeObjetosMultimedia(String archivo){
        this.archivo=archivo;
    }
    //METODOS
    public void escrituraObjetos(EstanteriaMultimedia estanteria) throws IOException{
        for(int i=0; i<estanteria.size(); i++){
            escritura.writeObject(estanteria.get(i));
        }
        escritura.close();
    }
}


Aquí está la clase EstanteriaMultimedia
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
public class EstanteriaMultimedia{
    private Multimedia[] listaMultimedia;
    private int cont;
    private EscrituraLecturadeObjetosMultimedia escrituraLectura=new EscrituraLecturadeObjetosMultimedia("Estanteria.dat");
 
    //CONSTRUCTOR
    public EstanteriaMultimedia(int tamañoMaximo){
        listaMultimedia=new Multimedia[tamañoMaximo];
        cont=0;
    }
 
    public int size(){
        return cont;
    }
 
    public boolean add(Multimedia multi){
        if(cont==listaMultimedia.length){
            return false;
        }else{
            listaMultimedia[cont]=multi;
            cont++;
            return true;
        }
    }
    public Multimedia get(int posicion){
        if (posicion <0 || posicion >= cont){
            throw new IndexOutOfBoundsException();
        }
        return listaMultimedia[posicion];
    }
    public int indexOf(Multimedia multi){
        for(int i=0; i<cont; i++){
            if(multi.iguales(listaMultimedia[i])){
                return i;
            }
        }
        return -1;
    }
    public String toString(){
        String cadena="";
        for(int i=0; i<cont; i++){
            cadena+=listaMultimedia[i].toString()+"\n";
        }
        return cadena;
    }
 
    //GUARDA LOS OBJETOS EN EL FICHERO
    public void guarda(EstanteriaMultimedia eM) throws IOException{
        escrituraLectura.escrituraObjetos(eM);
    }
}


Gracias de antemano
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema o duda con Writeobject

Publicado por Francisco Javier (17 intervenciones) el 01/07/2013 17:47:42
Vale tema resuelto, creía que no funcionaba bien porque en el fichero se guardaba de todo y luego no lo podría leer correctamente, pero el fallo estaba en que no inicializaba el FileOutputStream
Vaya tela.

Muchas gracias de todas formas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar