Foros del Web » Programación para mayores de 30 ;) » Java »

Manejo de archivos y objetos serializables

Estas en el tema de Manejo de archivos y objetos serializables en el foro de Java en Foros del Web. Holas amigos, iba a postear en el foro de "Programación" (que pensé era su debido), pero me mandaron para este foro que es de desarrollo ...
  #1 (permalink)  
Antiguo 04/12/2005, 15:07
 
Fecha de Ingreso: mayo-2005
Mensajes: 4
Antigüedad: 19 años
Puntos: 0
Exclamación Manejo de archivos y objetos serializables

Holas amigos, iba a postear en el foro de "Programación" (que pensé era su debido), pero me mandaron para este foro que es de desarrollo Web solo por que Java no corresponde al foro de Programación (digo me mandaron por que en las reglas del foro dide que no postee cosas allá de Java)

Pero bueno, igual la duda es sobre Java y aquí la dejo para ver si alguien me puede colaborar un poco.

En realidad son varias dudas y las enumeraré entonces para que me puedan responder por su referencia o número:

1. ¿ Es posible "ingresar" a un archivo y dirigirme a determinada línea de este ?; es decir, se tiene un archivo "archivo.txt" y quiero ingresar a el pero que me coja la información a partir de determianda línea ... pongo un ejmplo de qué estoy haciendo y qué es lo que quiero hacer para que quede un poco más claro.

Tengo:
Código:
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.StringTokenizer;

public class U {
        public static void main(String[] args) throws IOException {
                DataInputStream entrada = new DataInputStream(new FileInputStream("bin/materias.txt"));
                StringTokenizer materia = new StringTokenizer(entrada.readLine());
        	System.out.println(materia.nextToken());
        	entrada.close();
}
Esto lo que hace es que se entra al archivo y me devuelve de la primer línea que se encuentra en el archivo, la primer palabra (por que lo que hago es que separo con el StringTokenizer la primer línea en palabras para así mostrarlas independientementes y manejar como una especie de base de datos.

Ahora la duda es ... ¿cómo le puedo decir al programa que se vaya a la línea número 5 del archivo y me diga qué dice la primer palabra?, también es saber si ¿existe un método que me permita saber cuántas líneas tiene el archivo?, para hacer por ejemplo un algoritmo que permita leer la línea N del archivo, siendo N un parámetro del método. Espero haya quedado clara la duda.

2. Ya cambiando de tema; cuando yo ingreso un objeto en un archivo (guardo el objeto en disco) como serializable (sé que es posible guardar más de uno, pero en forma de arreglo) ... ¿es posible después abrir ese archivo desde java y decirle que me busque determinado objeto ?; es decir, si gaurdo un arreglo de Objetos tipo Estudiante (estos objetos tienen información como Nombre, Cédula, etc y unos métodos getNombre, getCedula, ...) puedo buscar determinado estudiante en el archivo ¿? ... es decir, ¿puedo ingresar en el archivo preguntando objeto por objeto su método getCedula? o ¿puedo saber cuántos objetos hay almacenados en ese archivo ?

Espero hayan quedado claras las dudas y qué es lo que pretendo hacer .. si es posible hacerlo y cómo, agradezco toda la info posible, links o lo que sea

Un saludo para todos y muchas gracias de antemano.

Ciao !!!!
  #2 (permalink)  
Antiguo 05/12/2005, 02:08
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
1.- Directamente, no.

2.- Tampoco.

Para lo que estas comentando sería más sencillo una base de datos. Los archivos en Java son para información "simple" (no relacionada) y normalmente secuencial.

Un saludo
  #3 (permalink)  
Antiguo 05/12/2005, 11:24
 
Fecha de Ingreso: junio-2005
Mensajes: 286
Antigüedad: 18 años, 10 meses
Puntos: 2
GreenEyed tiene razon.
Con respecto a 1., prueba con una 'for' loop (lee cuantas lineas quieras leer (e.g., 5), y captura en la linea 5 el primer token). No es una solucion muy elegante, pero creo que funcionaria. Recuerda que no puedes ir para atras en el stream.
2. GreenEyed tiene tambien la razon. Los serialized objects vuelven a memoria una vez los deserializas. Asi que tendrias que deserializar cada archivo y verificar si esta el objeto que buscas esta en ese archivo.

Buen dia,

--Willie
  #4 (permalink)  
Antiguo 05/12/2005, 17:35
 
Fecha de Ingreso: mayo-2005
Mensajes: 4
Antigüedad: 19 años
Puntos: 0
Gracias por las respuestas, soy conciente de que sería mucho más fácil hacerlo con una BD, pero el problema es que así me lo exigen hacer ya que se trata de un laboratorio de la Universidad .... voy a intentar la solución del "for" y les comentaré a ver qué tal me fue .... y, Willie, sería mucha molestia que fueras un poco más específico en la parte dos ? ... es decir, toca cargar todo el archivo a memoria y luego volver a descargarlo al archivo ?

Gracias por las respuestas y agradezco su comprensión, un saludo

Ciao !!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:51.