Java - Problema o duda con Writeobject

 
Vista:
sin imagen de perfil

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 Renzo (232 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
sin imagen de perfil

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
sin imagen de perfil

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