Necesito ayuda respecto a los ArrayList y su manipulación

lokoxtinena
30 de Octubre del 2005
Tengo que realizar un ejercicio en el cual se me pide serializar en un ArrayList una serie de objetos contenidos en un fichero binario que se ha creado previamente llamado "productos.dat"; bien, pues mi duda es la siguiente, no se como puedo acceder al fichero y tomar los datos de tamaño del objeto para introducirlos en una posición del ArrayList. Y, por consiguiente tampoco se como puedo introducir los datos del ArrayList en el fichero, no se como serializar y desserializar con un ArrayList, agredecería brevedad ya que la entrega es para mañana y de ello depende mi examen parcial, muchas gracias a todos.
Si podeis explicarmelo con código, es decir lo más claro porsible, os lo agradecería muchisimo, ya que mi nivel de java es un poco justo.

Muchas Gracias, espero pronta respuesta.

lokoxtinena
30 de Octubre del 2005
Ayudadme por favor!! Es muy importante, necesito saberlo hacer!! Mañana tengo un examen de estructura de datos y no tengo ni idea de por donde van los tiros en el tema de Array Lists y serialización y deserialización de objetos de ellos.

xscorpio
30 de Octubre del 2005
para introducir los objectos del arraylist, éstos deben haber implementado la interfaz Serializable, para poderse escribir en archivos. y para leer o escribir necesitas usar un flujo de entrada y salida, en este caso ObjectInputStream y ObjectOutputStream.
Aquí tienes un ejemplo para leer y escribir datos en un fichero:

import java.io.*;
import java.util.*;

public class LeeArchivo
{
private ArrayList arraylist;

public LeeArchivo()
{
arraylist = new ArrayList();
}

public void leerDatos(String filename)
{
try
{
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filename));

MyObject obj;

while((obj = (MyObject)ois.readObject()) != null)
{
arraylist.add(obj);
}

ois.close();

}
catch (Exception e) {}
}

public void imprimirDatos()
{
ListIterator it = arraylist.listIterator();

while(it.hasNext())
{
System.out.println(it.next());
}
}

public void limpiarDatos()
{
arraylist.clear();
}

public void escribirDatos(String filename)
{
try
{
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filename));

ListIterator it = arraylist.listIterator();

while(it.hasNext())
{
oos.writeObject(it.next());
}

oos.close();
}
catch (Exception e) {}
}

public static void main(String[] args)
{
/* Creamos un archivo cualquiera, para poder usarlo con los demás
métodos, en caso contrario no podremos leer ni escribir nada
*/

MyObject o1 = new MyObject("Object 1");
MyObject o2 = new MyObject("Object 2");
MyObject o3 = new MyObject("Object 3");
MyObject o4 = new MyObject("Object 4");
MyObject o5 = new MyObject("Object 5");

try
{
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("entrada.txt"));
oos.writeObject(o1);
oos.writeObject(o2);
oos.writeObject(o3);
oos.writeObject(o4);
oos.writeObject(o5);
oos.close();
}
catch (Exception e) {}

/* Aquí es donde probamos nuestra clase
*/

LeeArchivo lee = new LeeArchivo();
lee.leerDatos(args[0]);
lee.imprimirDatos();
lee.escribirDatos(args[1]);
}
}

Aqui esta la clase del Objeto q queremos leer:

import java.io.*;

public class MyObject implements Serializable
{
private String text;

public MyObject(String text)
{
this.text = text;
}

public String toString()
{
return text;
}
}