Java - Guardar a fichero y cargarlo

 
Vista:

Guardar a fichero y cargarlo

Publicado por Miguel Gato (7 intervenciones) el 27/08/2003 13:45:39
Ante todo quiero pedir disculpas por la forma de expresarme ya que soy novato en esto.

Mi problema es el siguiente:
Tengo una clase parecida a la siguiente:
public Class MiClase
{ char caracter;
float precio;
Miclase siguiente;
}

¿Alguien podría ponerme un pequeño ejemplo de como guardar en un fichero un vector de un número desconocido de elementos de esta clase y como recuperarlos?. Esto me sería de gran ayuda y más que suficiente para solucionar mi problema.

El problema real es algo mayor y posiblemente tenga otra solución mejor a la que tengo pensada.En realidad tengo una lista de elementos pertenecientes a dicha clase de manera que tengo una referencia al primer elemento de la lista y la variable "siguiente" de cada uno señala al siguiente elemento (algo parecido a las listas en C). Si alguien me puede indicar un método más eficiente (y sobre todo sencillo) de hacerlo le estaré muy agradecido.
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

RE:Guardar a fichero y cargarlo

Publicado por chuidiang (532 intervenciones) el 28/08/2003 10:00:40
En java hay formas utilizando la serilizacion y demas, pero puedes hacer algo mas al estilo C que quizas te resulte mas conocido.

La clase java.io.RandomAccesFile te permite abrir un fichero para lectura o escritura. Tiene metodos de writeInt(), readInt(), writeChar(), readChar(), writeFloat(), readFloat(), readUTF(), writeUTF() (estas dos para cadenas String), etc.

A MiClase ponle dos metodos. Uno escribete() y otro leete() que admitan un RandomAccessFile como parametro. Lo suyo seria que escribete() lleve de parametro un DataOutput y leete() un DataInput. La clase RandomAccessFile implementa (hereda de) ambas, asi que no tendrias problemas para pasar a estos metodos un RandomAccessFile.

Cada metodo debe escribir o leer los campos de la clase (caracter y precio). Los metodos suponen que el fichero ya esta abierto y que solo tienes que leer o escribir sus campos.

En tu programa principal, creas el RandomAccessFile para lectura o escritura, segun te interese. Si es para escribir, vas llamando al metodo escribete() de todos los nodos de la lista. Si es para leer, creas un nodo, llamas a su metodo leete() y se lo "enchufas" al anterior.

El metodo leete() podria lanzar un error si no se puede leer porque se ha llegado al fin de fichero. De esta forma sabes que se ha acabado el fichero (y la lista).

Otra opcion es que al crear el fichero escribas primero un entero con el numero de nodos en la lista. Luego ya vas escribiendo los nodos. Al leer, primero lees el entero que dice cuantos nodos hay y asi sabes cuando dejar de leer, sin necesidad de revisar el fin de fichero.

Espero que esto te sir
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

Muchas gracias.Si lo llego a saber antes...

Publicado por Miguel Gato (7 intervenciones) el 28/08/2003 11:02:25
Ante todo muchísimas gracias.

Ahora mismo he terminado de solucionar mi problema con la serializacion de la manera que tenía pensado y me he conectado para avisar de que ya no hacía falta que me ayudasen. Siento mucho las molestias que has tenido para ayudarme. Lo que tu me cuentas es lo que me hacía falta ya que estoy más familiarizado con esto que con lo que he utilizado. De todas formas me viene bien para almacenar variables más sencillas sin tener que utilizar la serialización.

Muchísimas gracias de nuevo. 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