Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ezar147

#1
Java / EOFException
4 Noviembre 2017, 20:32 PM
tengo un código que utilizo para leer los datos de un archivo, pero cuando ejecuto me genera un mensaje con el siguiente error: java.io.EOFException. he investigado un poco, y según lo que comprendo es que esta excepción se genera cuando me salgo del final de archivo.

aqui esta el codigo:
Código (java) [Seleccionar]

   try {
           archivoEntrada = new FileInputStream("prestamos.dat");
           entrada = new  ObjectInputStream(archivoEntrada);
           
           Prestamo aux = (Prestamo) entrada.readObject();
           while(aux != null){
               prestamos.add(aux);
               aux = (Prestamo) entrada.readObject();
           }
       } catch (Exception e) {
           JOptionPane.showMessageDialog(null, e);
       }
       finally{
           try {
               entrada.close();
           } catch (Exception e) {
           }
       }
   }

#2
Cita de: NEBIRE en  4 Noviembre 2017, 16:36 PM
Seguramente sí se está creando, sólo que tú no sabes donde los estás creando.

Tienes como ruta: "prestamos.dat", prueba a poner la ruta absoluta, si es relativa, lo será de donde actualmente esté apuntando.


Gracias ya lo  solucione, el problema estaba en un if() que contenía el código, solo que no me había dado cuenta de la condición que tenia
#3
tengo un pequeño inconveniente a la hora de crear un archivo binario puesto que el programa se ejecuta sin errores y no me genera excepciones, pero el archivo no se me crea.

los datos los estoy pasando de un arraylist.  
aqui les dejo el codigo:
Código (java) [Seleccionar]


try {
           archivoSalida = new FileOutputStream("prestamos.dat");
           salida = new ObjectOutputStream(archivoSalida);
           for(Prestamo p: prestamos){
               salida.writeObject(p);
           }
       } catch (Exception e) {
           JOptionPane.showMessageDialog(null, e);
       }
       finally{
           try {
               salida.close();
           } catch (IOException ex) {
               Logger.getLogger(AdminCooperativa.class.getName()).log(Level.SEVERE, null, ex);
           }
       }
}

#4
ya me di cuenta de mi error. Resulta que cuando guardo la información en el archivo también se guardan los datos del los punteros y estos se pasan al nuevo elemento creado. la solución es sencilla pero tuve que pensarlo bien para darme cuenta.

aquí les dejo el condigo con la solución
Código (cpp) [Seleccionar]

int tomar_datos(){
ifstream clientesIn("clientes.dat",ios::in|ios::binary);
if(!clientesIn){
return -1;
}
else{
Clientes aux; //para tomar los datos del archivo y luego enviarlos a la lista
clientesIn.read((char*)&aux, sizeof(Clientes));
while(!clientesIn.eof()){
                       aux.P_sig = NULL;
                       aux.P_ant = P_fin_cliente;
*registrar_cliente() = aux;
clientesIn.read((char*)&aux, sizeof(Clientes));
}
clientesIn.close();
}
}

#5
#include <termios.h>
#include <unistd.h>
#include <stdio.h>


Int main(){
      struct termios t;
      char c;
      tcgetattr(0, &t);
      t.c_lflag &= ~ICANON;
      tcsetattr(0, TCSANOW, &t);
      tcgetattr(0, &t); t.c_lflag &= ~ECHO; tcsetattr(0, TCSANOW, &t);
     
     c = getch();     //captura la tecla sin necesidad de dar enter
   
     //se devuelve la terminal a s estado anterior
     t.c_lflag |= ICANON;
     tcsetattr(0, TCSANOW, &t);
     
}


Asi seria si lo quieres hacer en linux. Tambien funciona con cin<<
#6
El problema es que es un trabajo que tengo que hacerlo con structuras y archivos sin usar librerias para listas
#7
Solo usa la libreria conio.h y llamas a la funcion getch() seria algo asi

char caracter = getch();

#8
Tengo un archivo binario y quiero pasar los datos del archivo y registrarlos en una lista dinámica, pero al momento de hacerlo se me crean dos elementos en la lista aparte de los que están en el archivo. Quien me podría ayudar?

este es el código.
Código (cpp) [Seleccionar]


Clientes *registrar_cliente(){
Clientes *cliente = new Clientes; //se crea el un nuevo cliente.

if(P_inicio_cliente == NULL){ //en caso que no exista ningun elemento en la lista.

P_fin_cliente = cliente;
P_inicio_cliente = cliente;
cliente->P_ant = NULL;
cliente->P_sig = NULL;
}

else{ //si ya existen elementos en la lista.

cliente->P_ant = P_fin_cliente;
P_fin_cliente->P_sig = cliente;
cliente->P_sig = NULL;
P_fin_cliente = cliente;
}
return cliente;
}

int tomar_datos(){
ifstream clientesIn("clientes.dat",ios::in|ios::binary);
if(!clientesIn){
return -1;
}
else{
Clientes aux; //para tomar los datos del archivo y luego enviarlos a la lista
clientesIn.read((char*)&aux, sizeof(Clientes));
while(!clientesIn.eof()){
*registrar_cliente() = aux;
clientesIn.read((char*)&aux, sizeof(Clientes));
}
clientesIn.close();
}
}