✅✅ ✅ ✅ ✅ Todos mis cursos gratuitos 👉 www.pildorasinformaticas.es ✅✅ ✅ ✅ ✅ 🚀 ¿Quieres ejercicios? ¿Quieres más temario? 👉 www.pildorasinformaticas.es/course/java-tutorizado/🚀 🚀 ¿Quieres que te resuelva las dudas de Java? 👉 www.pildorasinformaticas.es/course/java-tutorizado/ 🚀 💥💥💥 Siempre seguiré subiendo cursos gratuitos por aquí. Gracias a todos por seguirme. 💥💥💥
Ojala y en la educación contratarán docentes como vos, tú naciste para transmitir conocimiento, gracias, viéndote cinco años luego de que publiques el video.
Eres un crack. Sin duda de lo mejor que he visto. Es una delicia aprender Java de esta tan didáctica. Tienes un don profesor. Muchas gracias por hacer posible esto. Por cierto, veremos en el futuro sockets?
@@pildorasinformaticas Muchísimas gracias por estos vídeos de tantísima calidad. Una duda: por qué te permite referenciar la clase Administrador desde el main siendo esta clase no estática? A mí me señala la incompatibilidad (y por lo poco que sé, desde el main sólo se pueden referenciar clases estáticas). Muchísimas gracias otra vez.
Eres un grande Amigo.Mi profesora apenas sabe empezar a explicar este tema y contigo es que la supero en una tarde.Gracias por compartir tanto conocimiento y sin un ápice de ego.
Hola Juan, muchas gracias por compartir tus conocimientos con nosotros y dedicarnos tu tiempo. Te admiro mucho y me parece increible tu trabajo. Eternamente agradecido Maestro
Muy buenas las explicaciones de los videos!! dan muchas ganas de verlos. Los conceptos que tenia eran medio confusos, pero tu lo haces ver de manera muy simple y entendible. :D Saludos
Excelente tutorial solo que a mi por alguna razón eclipse me obligaba a controlar el siguiente error: ClassNotFoundException, no se porque ya que lo coloque igual que usted y no veo que usted maneje esa excepción que le menciono, pero de cualquier manera me funciona, Saludos.
En los comentarios del vídeo anterior comenté la estructura de control *TRY-WITH-RESOURCES* que permite abrir recursos, capturar posibles excepciones y cerrar las _fugas de memoria_ , todo en una sintaxis concisa y limpia. Aquí dejo el aspecto del bloque *try-catch* de este ejercicio haciendo valer la citada construcción "try-with-resources": try ( // try-with-resources ObjectOutputStream salida = new ObjectOutputStream( new FileOutputStream("C:/Users/Alejandro/Desktop/empleados.dat")); ObjectInputStream entrada = new ObjectInputStream( new FileInputStream("C:/Users/Alejandro/Desktop/empleados.dat")) ) { salida.writeObject(personal); Empleado[] personalRecuperado = (Empleado[]) entrada.readObject(); for (Empleado empleado : personalRecuperado) { System.out.println(empleado); } } catch (Exception e) { System.out.println("Error en la serialización del objeto"); }
Hola Juan. El curso mas bueno y completo que hay en español y en ingles; felicidades. Una consulta, sere que puedas crear una serie de videos sobre Java NIO, sobre buffers, channel, etc?
Muchas gracias por el comentario. Es mi intención hacer cursos de todo eso que mencionas, pero mi problema es el tiempo que no tengo mucho. Este tipo de cursos requieren de mucho tiempo libre, pero sigo en ello. Un saludo!!
Buenas noches, actualmente el enlace de descarga del archivo que se encuentra en la descripción está roto. ¿Lo podría actualizar? Muchas gracias de antemano.
Veo que no estás utilizando arrayList y me gustaria saber si lo has explicado en algún video que no he visto. Creo que es una herramienta fantástica para trabajar con vectores. Enhorabuena por tus videos, son de muy buena calidad.
carlos Pérez Lizondo Hola !! Tienes razón, aún no he trabajado con arrayList y te confieso que me di cuenta hace pocos vídeos. Lo veremos. Es muy importante. Un saludo
Hola, quizá llego algo tarde a la parte de preguntas pero ya aqui tenia una duda, si creo una interfaz de usuario, que por ejemplo tenga una entrada de nombre y apelldio y edad, almacenarlos en un objeto nuevo llamado por ejemplo Informacion con sus metodos de obtener cada uno de estos datos, con la serializacion (lo visto en este video) es posible hacer una base de datos de objetos tipo Informacion?
Hola profesooor!!!, aquí retomando otra vez tus clases de java!! :-)))) Tengo una duda, no me he enterado muy bien de cómo se ejecuta el método toString, quiero decir que en ningún momento lo llamamos... o si?. Gracias por tu tiempo dedicado a nosotros Un saludo
+Mercedes Iranzo Hola !! No recuerdo ahora qué hicimos en este vídeo, pero ten en cuenta que el método toString pertenece a la clase Object con lo cual todas nuestras clases lo heredan por defecto y eso nos permite utilizarlo. Si sigues con dudas, indícame por favor el minuto y segundo del vídeo donde aparece la instrucción que genera tu duda y te intento ayudar. Un saludo
Lo tenemos sobreescrito en la Clase Empleado. Si no, tendríamos que llamar a los métodos getters dentro del System.out.println(e.getSueldo() + e.getFechaContrato()); que construimos dentro del bucle for each. Un saludo!
Saludos muchas gracias por los videos una consulata como haria para que al escribir objetos de manera discontinua estos no se sobrepongan es decir digamos añado 3 objetos luego cierro todo y vuelvo a entrar añado dos objetos mas, solo se mantienen esos 2 ultimos y los anteriores 3 se eliminan o sobreponen muchas gracias espero una respuesta ya q llevo varios dias con eso :(
Creo que utilizando el constructor de FileOutputStream(File nombre_de_la_ruta, Boolean si_sobreescribe_o_escribe_a_partir) Claramente no están así escritas las variables en la API pero básicamente, si luego de la ruta, ingresas un true, lo que se escriba en la ruta se sobrescribirá, si le pones un false, sobrescribirá el texto. En la API el constructor es: FileOutputStream(File file, boolean append)
Hola !! Gracias por el comentario. No, no tengo ningún vídeo que hable al respecto. En el de Android si que trabajaré con la cámara del dispositivo. Un saludo!!
Muy buenas, tengo una duda que no tiene mucho que ver con este vídeo. Más bien está relacionado con las interfaces. La duda es la siguiente. Tengo una interfaz, en la que tengo declarado un método, para ser usado cuando lo necesite. El caso es: ¿Para que sirve crear un vector de ese tipo de interfaz, y como es eso posible? Tenía entendido que las interfaces solo sirven para implementarlas, pero también se pueden declarar como si fueran objetos, y cuando se use algún método suyo se escribe en la llamada a ese método. Saludos, espero que hayas entendido mi duda, y puedas responderla.
hola, que tal, tengo una pega con lo que has programado, a ver si me puedes ayudar!!, he hecho un pequeño programa, para probar esto que estas expicando, que cada vez que lo ejecuto y hago un registro, se registra y se lista perfectamente, en un arrayList, como tu has hecho, pero cuando salgo y vuelvo a entrar y le digo que me liste, no me lista nada. y lo he hecho todo como tu
Tengo una pregunta: ¿Crees que en, aproximadamente 15 días se puede llegar a dominar Java (la parte de los primeros 50 vídeos)? Es una curiosidad. Por otra parte, felicidades, tus cursos son los mejores de TH-cam con gran diferencia sobre los demás.
Ángel A. Martínez Hola !! Muchas gracias por tu comentario. Me alegro de que te gusten los vídeos. La respuesta a tu pregunta es no, a no ser que seas un portento de la naturaleza (que puede ser). Esta pregunta me la hacen mucho y me recuerda a esos cursos de inglés que se anuncian en TV y en los periódicos: "Aprenda inglés en 30 días", "Aprenda inglés con 1000 palabras" Aprender un idioma como el inglés para hablarle con soltura, es una actividad que suele llevar años para una persona normal. Lo mismo pasa con la programación. Puedes entender los vídeos, pero dominar el lenguaje es algo que solo conseguirás en años con mucha práctica. Un saludo
@@angela.martinez6352 si estas familiarizado con la programación de otros lenguajes orientados a objetos puede que si, si no estas familiarizado con lenguajes de programación directamente de cualquier nivel de abstracción lo dudo mucho, quizas te lleve alrededor de 2 o 3 meses aprenderlo ponele onda nomas saludos.
Ingeniero tengo una dudas sobre el tema anterior, como pudo saber el numero de bytes que tiene un archivo "X" que dese leer en este caso usted tubo que correr un for con un contador para saberlo, pero como saber el numero de bytes sin usar esa forma osea, creando una variable y no usando un dato fijo, no se si me voy a entender. Otra duda que tengo es, si un metodo que genera una excepcion de algun tipo digamos IOException puede retornar tambien un valor. Por ejemplo el metodo que hizo usted el que leia el archivo y almacenaba los bytes en un array[] este metodo se supone que por usar la clase FileInputStream debo de usar un try{}catch() en este caso si deseo que retorne el array donde almacena el archivo se podria, ya que esto se maneja desde el lado del try, pero que pasa si por alguna razon genera un error y no puedo leer el archivo y por ende no podra retorna nada que pasaria del lado del catch() ya que estoy obligado a retornar algo ya que en el metodo lo indico, no se si me doy a entender disculpe la molestia pero la verdad es algo que no tengo idea como hacerlo o si es correcta mi forma de plantear el problema
ingeniero hechele un vistazo al metodo es practicamente el mismo que usted hizo, lo que deseo saber es como hacerle para retornar el array int[] LecturaByte (){ File ruta = new File("C:/Users\\Hp/Desktop/prueba stream byte/Megadeth - Die Dead Enough.mp3"); int almacena_lectura = new int[4143046]; //Numero de bytes del archivo try{ //Creando el stream hacia la ruta del archivo FileInputStream streamByte = new FileInputStream(ruta); boolean fin_archivo = true; //Comprueba que se alla llegado al fin del archivo int cont_byte = 0; //Cuenta el numero de bytes que tiene el archivo while(fin_archivo){ //Itera hasta que no se alla llegado hasta el fin del archivo int byte_entrada = streamByte.read(); //Lee un byte de la ruta establecida if(byte_entrada == - 1){ //Comprueba que no sea el fin del archivo fin_archivo = false; //Para finalizar el ciclo }else{ almacena_lectura[cont_byte] = byte_entrada; //Almacena el byte leido en el array cont_byte++; //Incrementa el contador en 1 } } streamByte.close(); //Cierra el stream de bytes return almacena_lectura; }catch(IOException e){ System.out.println("Error. No se pudo leer el archivo"); /*Me marca un error esta parte del codigo ya que necesito retornar algo (el array) pero como se supone que no se pudo abrir no lo podre retornar como se podria platear de otra forma este metodo*/ } }
+Fermin Gomez Hola !! No es molestia. Tu primera duda se explica en los vídeos dedicados a los STREAMS y flujo de datos. Échale un vistazo a estos vídeos. Tu segunda duda se resuelve en los vídeos dedicados a las excepciones. Échale un vistazo a estos vídeos también. Un saludo!!
Hola de nuevo. Apesar de haber aprendido a usar estos métodos, no consigo que funcionen para mi programa. Intento guardas objetos que generan un ArrayList, de manera que si añades o quitas elementos luego cargues la Array actualizada. No hay manera, guarda algo pero luego no lo carga, y he seguido la conversion de object a la clase que necesito. Un saludo
pildorasinformaticas Hola, te pongo el codigo y te comento: public ArrayList catalogo =new ArrayList(); //*Único Campo public miTPV(){ //*constructor Cargar(); } public static void Cargar (){ //*metodo lector miTPV c ; Cargador cargador=new Cargador(); c = (miTPV) cargador.leer_objetos(); c.muestra_catalogo(); //* esta llamada a método funciona, muestra los elementos guardados c.Mostrar_Ficha(); //* este método no funciona.. } Ambos métodos usan la variable catálogo, muestra_catalogo funciona y los muestra, pero Mostrar_ficha no, de hecho no encuentra níngun elemento (como si catalago estubiera vacia). No te pongo todo el código por aqui porque ocupa mucho, pero te lo puedo mandar por privado o por donde estimes oportuno. Un saludo y gracias por tu ayuda y por este maravilloso curso.
Envíalo por favor a cursos@pildorasinformaticas.es junto a una breve explicación del problema. Recibo muchos mails con dudas y tardo un poco en contestar. Gracias. Un saludo
Que pasa si mi clase hace uso de otras clases para sus propiedades, es decir que quiero serializar el objeto CARRO que contiene los objetos MOTOR y NEHUMATICO, como puedo serializar la clase CARRO???
Buen día profe. Lo que pasa es que estoy intentando hacer un juego basado en texto (una forma practica de aprender jeje), necesito guardar el progreso, y luego volverlo a cargar, como podria implementar eso ?
Hola Juan, me preguntaba si el método flush() es importante en estos temas, lo he visto usar algunas veces pero no entiendo muy bien el por qué... Gracias!
Muy buenas, tengo una pequeña duda, y es que no me queda muy claro en qué momento y desde dónde se llama al método toString(). Gracias de antemano y como siempre, felicidades por el curso que es magnífico.
Hola !! No recuerdo ya el código que utilicé en este vídeo, pero el método toString() pertenece a la clase Object así que lo puedes utilizar cuando quieras desde donde quieras. Lo estás heredando siempre. Un saludo!!
+Matias Daneri Si, si si.... así es. Muchas veces a la hora de hablar decimos "objetos" cuando en realidad son instancias de objeto. Es una incorrección que se comete en muchos sitios (foros, incluso libros) y eso hace que uno la cometa también. Seré más preciso en el futuro. Un saludo
Hola Juan! Gracias por tus videos. Te queria consultar algo. Estuve practicando la serializacion pero en lugar de usar la clase Empleado usé una clase con una sola variable (una frase) y con un metodo toString() que retornaba esa frase. Al serializar el objeto funciona todo bien, me crea el archivo y todo. El problema es que despues de crear ese objeto recuperado no lo puedo mostrar por consola. Me sale un error en el system.out.println() Aca el ejemplo: public static void main(String args[]){ ObjetoSerializable objeto = new ObjetoSerializable(); try { //Creamos el archivo serializado ObjectOutputStream buffer_salida = new ObjectOutputStream(new FileOutputStream("C:/Users/...etc.../Objeto serializado.dat")); buffer_salida.writeObject(objeto); buffer_salida.close(); //Leemos el archivo serializado ObjectInputStream buffer_entrada = new ObjectInputStream(new FileInputStream("C:/Users/...etc.../Objeto serializado.dat")); ObjetoSerializable objeto_recuperado = (ObjetoSerializable) buffer_entrada.readObject(); buffer_entrada.close(); } catch (Exception e) { System.out.println("Ha fallado el programa."); } System.out.println(objeto_recuperado); //ESTA LINEA ME GENERA NullPointerException }
Te da error porque en caso de entrar en el catch, objeto recuperado quedaría vacío ya que le das valor solo en el try (ya sabes que si el flujo entra en el catch es porque ignora el try). En Java debes contemplar todas las posibilidades para que un objeto no quede vacío. Un saludo!
Hola Juan, acá avanzando como loco con tus cursos, este y el de Android. Una duda existencial: el casting que hiciste, ¿siempre puedo pasar un object a un array de strings o int o a cualquier otro tipo de variable?
No, siempre no, en este caso puede porque el sabe el tipo de objeto que es, entonces el casting es posible, en caso de que no sea posible, tengo entendido que te tira un error de tipo ClassCastException, ya que será una operación que simplemente no es posible.
hola buenas Juan!!! me gustaría saber aproximadamente cuantos vídeos crees que tendrá este curso competo?? o cuando mas o menos crees que lo terminaras? muchas gracias por el curso!!! voy por el vídeo 100 y me esta encantado.
daniel dafonte Hola !! El curso tendrá aproximadamente 350 vídeos. Todavía no he comenzado con JEE. Subo varios vídeos todas las semanas y tardará bastante en terminar. Un saludo
Roberto de Jesus Morrinson Romero Hola !! En principio no, pero como me proponéis todos los días ver algún tipo de framework, me estoy planteando ver alguno/s Un saludo
pildorasinformaticas Gracias por tu respuesta. Sería genial de Primefaces. ¿Cuanto cobrarias por un curso particular de JSF? Me interesa aprenderlo. Gracias.
Gracias Juan por tus cursos! Tengo un pequeño inconveniente: me aparece un error este el siguiente condigo: Administrador jefe= new Administrador("Juan", 80000, 2005,12,15); El mensaje de error es el sgt: No enclosing instance of type Serializando is accessible. Must qualify the allocation with an enclosing instance of type Serializando (e.g. x.new A() where x is an instance of Serializando). Q podria ser el error? se le agradecería una pronta respuesta.
Es un tema de cierre de llaves. A mi me pasó igual y después me di cuenta de que me faltaba la llave de cierre de la clase que contiene el método main y a esa instancia de la clase Administrador. Saludos!!
Hola !! No, la persistencia de datos no tiene que ver con la serialización. Explicarte por escrito qué es la serialización es largo. Si miras los vídeos donde hablo de la serialización lo entenderás. Un saludo!!
alguien que me pueda ayudar quiero serializar listas enlazadas como por ejemplo una lista simple pero en una clase tengo la lista propiamente dicha y en otra los nodos, he implementado la interfaz en ambas clases y si serializa pero a la hora de deserializar ¿debo desserializar solamente la lista ? ó ¿la lista con los nodos por aparte? cual de los dos
En caso de que los nodos estén dentro de la clase de las listas (como clase interna) o como clase externa pero instanciada dentro de la clase de la lista, entonces solo la lista, en caso de ser dos clases separadas (dentro del código), entonces 1 por 1.
Tengo un curso de Java en Udemy (en elaboración, vamos por el vídeo 171 y se suben nuevos vídeos todas las semanas) que se llama "Java desde 0". Puedes buscarlo también por autor "Juan Díaz". Viene con ejercicios, test, documentación PDF y por supuesto resolución de dudas. Un saludo!
No acabo de entender para que sirve hacer que una clase implementa la interfaz Serializable no tiene ningun método. Se puede serializar un objeto sin necesidad de que este objeto implemente la interfaz Serializable.
Es simplemente un requisito a cumplir, no hace falta que implemente métodos la interfaz, sino que sirve como condición para que una clase pueda pasarse a bytes, asumo yo que no viene incorporada la metodología para todas las clases, ya que el hecho de implementar la interfaz, consume recursos, y si no vas a serializar objetos de una clase, no hay que consumir innecesariamente recursos implementando la interfaz en esa clase.
Necesitaría dos vídeos para explicártelo o escribir por aquí 500 líneas de código. Pero en mis vídeos dedicados a Swign se explica lo necesario para que puedas hacer transferir objetos entre JFrames. Un saludo!!
✅✅ ✅ ✅ ✅ Todos mis cursos gratuitos 👉 www.pildorasinformaticas.es ✅✅ ✅ ✅ ✅
🚀 ¿Quieres ejercicios? ¿Quieres más temario? 👉 www.pildorasinformaticas.es/course/java-tutorizado/🚀
🚀 ¿Quieres que te resuelva las dudas de Java? 👉 www.pildorasinformaticas.es/course/java-tutorizado/ 🚀
💥💥💥 Siempre seguiré subiendo cursos gratuitos por aquí. Gracias a todos por seguirme. 💥💥💥
Casi 9 años después, me sigues ayudando mucho :)
Ojala y en la educación contratarán docentes como vos, tú naciste para transmitir conocimiento, gracias, viéndote cinco años luego de que publiques el video.
Codigo de inicio para quien guste.
package serializacion;
import java.util.Date;
import java.util.GregorianCalendar;
public class Serializando {
public static void main(String[] args) {
// TODO Auto-generated method stub
Administrador jefe = new Administrador("Juan", 800, 2017, 03, 8);
jefe.setIncentivo(5000);
Empleado[] personal = new Empleado[3];
personal[0] = jefe;
personal[1] = new Empleado("Ana", 25000,2008,10,1);
personal[2] = new Empleado("Luis", 18000,2012,9,15);
}
}
class Empleado{
String nombre;
double sueldo;
Date fechaContrato;
public Empleado(String n, double s, int agno, int mes, int dia){
nombre = n;
sueldo = s;
GregorianCalendar calendario = new GregorianCalendar(agno, mes-1, dia);
fechaContrato = calendario.getTime();
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public double getSueldo() {
return sueldo;
}
public void setSueldo(double sueldo) {
this.sueldo = sueldo;
}
public Date getFechaContrato() {
return fechaContrato;
}
public void setFechaContrato(Date fechaContrato) {
this.fechaContrato = fechaContrato;
}
public void SubirSueldo(double porcentaje){
double aumento = sueldo*porcentaje/100;
sueldo+=aumento;
}
public String toString(){
return "Noombre = " + nombre + " ,sueldo = " + sueldo + " , fecha de contrato: " + fechaContrato;
}
}
class Administrador extends Empleado{
private double incentivo;
public Administrador(String n, double s, int agno, int mes, int dia){
super(n,s,agno,mes,dia);
incentivo = 0;
}
public double getSueldo() {
double sueldoBase = super.getSueldo();
return sueldoBase+incentivo;
}
public void setIncentivo(double incentivo) {
this.incentivo = incentivo;
}
public String toString(){
return super.toString()+ " Incentivo = " + incentivo;
}
}
Gracias por el aporte. Un saludo!!
Gracias!!!!
Qué detalle. Muchas gracias!!!
Buen detalle, muchas gracias.
Muchas gracias!! 🙏Justo estaba buscando el vídeo pero no lo encontraba ...
Eres un crack. Sin duda de lo mejor que he visto. Es una delicia aprender Java de esta tan didáctica. Tienes un don profesor. Muchas gracias por hacer posible esto. Por cierto, veremos en el futuro sockets?
+santi cao Hola !! Gracias por el comentario. Me alegro de que te gusten los vídeos. Sí, veremos sockets. Un saludo
@@pildorasinformaticas Muchísimas gracias por estos vídeos de tantísima calidad.
Una duda: por qué te permite referenciar la clase Administrador desde el main siendo esta clase no estática? A mí me señala la incompatibilidad (y por lo poco que sé, desde el main sólo se pueden referenciar clases estáticas). Muchísimas gracias otra vez.
Tío eres mi salvador, gracias a ti he aprobado más del 90% del curso...Muchas gracias
Gracias Juan por compartir tus conocimientos de esta forma tan didáctica y con tanta paciencia. Sos Grande!
Eres un grande Amigo.Mi profesora apenas sabe empezar a explicar este tema y contigo es que la supero en una tarde.Gracias por compartir tanto conocimiento y sin un ápice de ego.
Excelente explicación buena inversión de mi tiempo viendo tus vídeos, gracias. Saludos desde Ecuador.
Gracias por el comentario. Un saludo!
buffff comiendome todo el curso para ayudarme con el bootcamp de backend java
muchas gracias por todo!
Hola Juan, muchas gracias por compartir tus conocimientos con nosotros y dedicarnos tu tiempo. Te admiro mucho y me parece increible tu trabajo. Eternamente agradecido Maestro
Si alguien tiene dificultad con esto que vaya al video 1 y vea todo de nuevo!!!🤣🤣🤣🤣. Excelente!!! Gracias. Chévera cambur.
Muchas gracias por el contenido, como siempre atento a todos tus cursos impartidos por que explicas muy bien, muy claro.
Muy buenas las explicaciones de los videos!! dan muchas ganas de verlos. Los conceptos que tenia eran medio confusos, pero tu lo haces ver de manera muy simple y entendible. :D
Saludos
Gracias !! ese es mi objetivo. Un saludo!!
¡Eres mi salvador! Gracias.
Un gran trabajo. Muchas gracias por compartir tus conocimientos.Te felicito
Gracias !! Un saludo
Mil Gracias amigo excelente video. Haz salvado mi vida
Gracias!! Gracias!! Gracias!! Me salvaste la vida!
Muy buen tutorial.
Excelente tutorial solo que a mi por alguna razón eclipse me obligaba a controlar el siguiente error: ClassNotFoundException, no se porque ya que lo coloque igual que usted y no veo que usted maneje esa excepción que le menciono, pero de cualquier manera me funciona, Saludos.
En los comentarios del vídeo anterior comenté la estructura de control *TRY-WITH-RESOURCES* que permite abrir recursos, capturar posibles excepciones y cerrar las _fugas de memoria_ , todo en una sintaxis concisa y limpia. Aquí dejo el aspecto del bloque *try-catch* de este ejercicio haciendo valer la citada construcción "try-with-resources":
try ( // try-with-resources
ObjectOutputStream salida = new ObjectOutputStream(
new FileOutputStream("C:/Users/Alejandro/Desktop/empleados.dat"));
ObjectInputStream entrada = new ObjectInputStream(
new FileInputStream("C:/Users/Alejandro/Desktop/empleados.dat"))
) {
salida.writeObject(personal);
Empleado[] personalRecuperado = (Empleado[]) entrada.readObject();
for (Empleado empleado : personalRecuperado) {
System.out.println(empleado);
}
} catch (Exception e) {
System.out.println("Error en la serialización del objeto");
}
me has salvado crack. Muchos éxitos!!!!!!
Muy buena la explicacion Pildoras muchas gracias
Muchas gracias salvaste mi parcial.
Te felicito por tan excelente video.
Hola Juan. El curso mas bueno y completo que hay en español y en ingles; felicidades. Una consulta, sere que puedas crear una serie de videos sobre Java NIO, sobre buffers, channel, etc?
Muchas gracias por el comentario. Es mi intención hacer cursos de todo eso que mencionas, pero mi problema es el tiempo que no tengo mucho. Este tipo de cursos requieren de mucho tiempo libre, pero sigo en ello. Un saludo!!
@@pildorasinformaticas Calidad Juan. Gracias
Buenas noches, actualmente el enlace de descarga del archivo que se encuentra en la descripción está roto. ¿Lo podría actualizar? Muchas gracias de antemano.
mucha gracias entendi muchas cosa que no entendia con los manejadores de archivo
*00:26** Convertir en bytes un objeto*
Eres el mejor!!
Veo que no estás utilizando arrayList y me gustaria saber si lo has explicado en algún video que no he visto. Creo que es una herramienta fantástica para trabajar con vectores. Enhorabuena por tus videos, son de muy buena calidad.
carlos Pérez Lizondo Hola !! Tienes razón, aún no he trabajado con arrayList y te confieso que me di cuenta hace pocos vídeos. Lo veremos. Es muy importante. Un saludo
excelente amigo !! muchas gracias
Hola, quizá llego algo tarde a la parte de preguntas pero ya aqui tenia una duda, si creo una interfaz de usuario, que por ejemplo tenga una entrada de nombre y apelldio y edad, almacenarlos en un objeto nuevo llamado por ejemplo Informacion con sus metodos de obtener cada uno de estos datos, con la serializacion (lo visto en este video) es posible hacer una base de datos de objetos tipo Informacion?
Hola profesooor!!!, aquí retomando otra vez tus clases de java!! :-))))
Tengo una duda, no me he enterado muy bien de cómo se ejecuta el método toString, quiero decir que en ningún momento lo llamamos... o si?.
Gracias por tu tiempo dedicado a nosotros
Un saludo
+Mercedes Iranzo Hola !! No recuerdo ahora qué hicimos en este vídeo, pero ten en cuenta que el método toString pertenece a la clase Object con lo cual todas nuestras clases lo heredan por defecto y eso nos permite utilizarlo. Si sigues con dudas, indícame por favor el minuto y segundo del vídeo donde aparece la instrucción que genera tu duda y te intento ayudar. Un saludo
Lo tenemos sobreescrito en la Clase Empleado. Si no, tendríamos que llamar a los métodos getters dentro del System.out.println(e.getSueldo() + e.getFechaContrato()); que construimos dentro del bucle for each.
Un saludo!
Saludos muchas gracias por los videos una consulata como haria para que al escribir objetos de manera discontinua estos no se sobrepongan es decir digamos añado 3 objetos luego cierro todo y vuelvo a entrar añado dos objetos mas, solo se mantienen esos 2 ultimos y los anteriores 3 se eliminan o sobreponen muchas gracias espero una respuesta ya q llevo varios dias con eso :(
Creo que utilizando el constructor de FileOutputStream(File nombre_de_la_ruta, Boolean si_sobreescribe_o_escribe_a_partir)
Claramente no están así escritas las variables en la API pero básicamente, si luego de la ruta, ingresas un true, lo que se escriba en la ruta se sobrescribirá, si le pones un false, sobrescribirá el texto.
En la API el constructor es:
FileOutputStream(File file, boolean append)
Es una explicación excelente.
¿dentro de tus vídeos existe alguno que hable de captura de vídeo con la cámara web?
Hola !! Gracias por el comentario. No, no tengo ningún vídeo que hable al respecto. En el de Android si que trabajaré con la cámara del dispositivo. Un saludo!!
Gracias Juan!
Muy buenas, tengo una duda que no tiene mucho que ver con este vídeo. Más bien está relacionado con las interfaces. La duda es la siguiente. Tengo una interfaz, en la que tengo declarado un método, para ser usado cuando lo necesite. El caso es: ¿Para que sirve crear un vector de ese tipo de interfaz, y como es eso posible? Tenía entendido que las interfaces solo sirven para implementarlas, pero también se pueden declarar como si fueran objetos, y cuando se use algún método suyo se escribe en la llamada a ese método. Saludos, espero que hayas entendido mi duda, y puedas responderla.
como puedo pedir los datos por pantalla para luego guardarlos en un fichero con objectoutputstream?
hola, que tal, tengo una pega con lo que has programado, a ver si me puedes ayudar!!, he hecho un pequeño programa, para probar esto que estas expicando, que cada vez que lo ejecuto y hago un registro, se registra y se lista perfectamente, en un arrayList, como tu has hecho, pero cuando salgo y vuelvo a entrar y le digo que me liste, no me lista nada. y lo he hecho todo como tu
¡¡¡ GRACIASpor decir que vas a dar el código al FINALdel vídeo !!! (VIVA LA IRONÍA)
queda un poquito exigente el comentario para alguien que hace cursos completos de forma altruista xd
@@humuhumunuku2113PESE A QUE DIGA QUE ES IRONIA, ES UN COMENTARIO A BUENAS. ESPERO QUE NADIE MÁS LO MALINTERPRETE.
Tengo una pregunta: ¿Crees que en, aproximadamente 15 días se puede llegar a dominar Java (la parte de los primeros 50 vídeos)? Es una curiosidad.
Por otra parte, felicidades, tus cursos son los mejores de TH-cam con gran diferencia sobre los demás.
Ángel A. Martínez Hola !! Muchas gracias por tu comentario. Me alegro de que te gusten los vídeos. La respuesta a tu pregunta es no, a no ser que seas un portento de la naturaleza (que puede ser).
Esta pregunta me la hacen mucho y me recuerda a esos cursos de inglés que se anuncian en TV y en los periódicos: "Aprenda inglés en 30 días", "Aprenda inglés con 1000 palabras"
Aprender un idioma como el inglés para hablarle con soltura, es una actividad que suele llevar años para una persona normal. Lo mismo pasa con la programación. Puedes entender los vídeos, pero dominar el lenguaje es algo que solo conseguirás en años con mucha práctica.
Un saludo
Gracias por tu respuesta. Tío, deberían darte una medalla a la calidad en la enseñanza. Porque eres una rara avis.
Madre mia, si bien solo puedo dedicar una o dos horas al día a hacer este curso, aprenderlo en 15 días me parece tan imposible!
@@angela.martinez6352 si estas familiarizado con la programación de otros lenguajes orientados a objetos puede que si, si no estas familiarizado con lenguajes de programación directamente de cualquier nivel de abstracción lo dudo mucho, quizas te lleve alrededor de 2 o 3 meses aprenderlo ponele onda nomas saludos.
Hola disculpa me podrias ayudar a generar reportes con IREPORT... pero con los datos de esos archivos serializados.. gracias
Ingeniero tengo una dudas sobre el tema anterior, como pudo saber el numero de bytes que tiene un archivo "X" que dese leer en este caso usted tubo que correr un for con un contador para saberlo, pero como saber el numero de bytes sin usar esa forma osea, creando una variable y no usando un dato fijo, no se si me voy a entender.
Otra duda que tengo es, si un metodo que genera una excepcion de algun tipo digamos IOException puede retornar tambien un valor.
Por ejemplo el metodo que hizo usted el que leia el archivo y almacenaba los bytes en un array[] este metodo se supone que por usar la clase FileInputStream debo de usar un try{}catch() en este caso si deseo que retorne el array donde almacena el archivo se podria, ya que esto se maneja desde el lado del try, pero que pasa si por alguna razon genera un error y no puedo leer el archivo y por ende no podra retorna nada que pasaria del lado del catch() ya que estoy obligado a retornar algo ya que en el metodo lo indico, no se si me doy a entender
disculpe la molestia pero la verdad es algo que no tengo idea como hacerlo o si es correcta mi forma de plantear el problema
ingeniero hechele un vistazo al metodo es practicamente el mismo que usted hizo, lo que deseo saber es como hacerle para retornar el array
int[] LecturaByte (){
File ruta = new File("C:/Users\\Hp/Desktop/prueba stream byte/Megadeth - Die Dead Enough.mp3");
int almacena_lectura = new int[4143046]; //Numero de bytes del archivo
try{
//Creando el stream hacia la ruta del archivo
FileInputStream streamByte = new FileInputStream(ruta);
boolean fin_archivo = true; //Comprueba que se alla llegado al fin del archivo
int cont_byte = 0; //Cuenta el numero de bytes que tiene el archivo
while(fin_archivo){ //Itera hasta que no se alla llegado hasta el fin del archivo
int byte_entrada = streamByte.read(); //Lee un byte de la ruta establecida
if(byte_entrada == - 1){ //Comprueba que no sea el fin del archivo
fin_archivo = false; //Para finalizar el ciclo
}else{
almacena_lectura[cont_byte] = byte_entrada; //Almacena el byte leido en el array
cont_byte++; //Incrementa el contador en 1
}
}
streamByte.close(); //Cierra el stream de bytes
return almacena_lectura;
}catch(IOException e){
System.out.println("Error. No se pudo leer el archivo");
/*Me marca un error esta parte del codigo ya que necesito retornar algo (el array) pero como se
supone que no se pudo abrir no lo podre retornar como se podria platear de otra forma este
metodo*/
}
}
+Fermin Gomez Hola !! No es molestia. Tu primera duda se explica en los vídeos dedicados a los STREAMS y flujo de datos. Échale un vistazo a estos vídeos. Tu segunda duda se resuelve en los vídeos dedicados a las excepciones. Échale un vistazo a estos vídeos también. Un saludo!!
como puedo leer mas de un objeto guardado?
En que videos se muestra el ejercicio sin aplicar la serializacion?
no pude descargar el archivo de ejemplo. me pueden ayudar?
Hola de nuevo. Apesar de haber aprendido a usar estos métodos, no consigo que funcionen para mi programa. Intento guardas objetos que generan un ArrayList, de manera que si añades o quitas elementos luego cargues la Array actualizada. No hay manera, guarda algo pero luego no lo carga, y he seguido la conversion de object a la clase que necesito. Un saludo
Pedro Nicolas Tristan Hola !! Para poder ayudar con este tipo de dudas, necesito que copies y pegues tu código por aquí. Un salduo
pildorasinformaticas Hola, te pongo el codigo y te comento:
public ArrayList catalogo =new ArrayList(); //*Único Campo
public miTPV(){ //*constructor
Cargar();
}
public static void Cargar (){ //*metodo lector
miTPV c ;
Cargador cargador=new Cargador();
c = (miTPV) cargador.leer_objetos();
c.muestra_catalogo(); //* esta llamada a método funciona, muestra los elementos guardados
c.Mostrar_Ficha(); //* este método no funciona..
}
Ambos métodos usan la variable catálogo, muestra_catalogo funciona y los muestra, pero Mostrar_ficha no, de hecho no encuentra níngun elemento (como si catalago estubiera vacia). No te pongo todo el código por aqui porque ocupa mucho, pero te lo puedo mandar por privado o por donde estimes oportuno.
Un saludo y gracias por tu ayuda y por este maravilloso curso.
Envíalo por favor a cursos@pildorasinformaticas.es junto a una breve explicación del problema. Recibo muchos mails con dudas y tardo un poco en contestar. Gracias. Un saludo
Que pasa si mi clase hace uso de otras clases para sus propiedades, es decir que quiero serializar el objeto CARRO que contiene los objetos MOTOR y NEHUMATICO, como puedo serializar la clase CARRO???
Serializando la clase Motor y Neumatico. Un saludo!!
Buen día profe. Lo que pasa es que estoy intentando hacer un juego basado en texto (una forma practica de aprender jeje), necesito guardar el progreso, y luego volverlo a cargar, como podria implementar eso ?
mis respetos !!!
Hola Juan, me preguntaba si el método flush() es importante en estos temas, lo he visto usar algunas veces pero no entiendo muy bien el por qué...
Gracias!
Lucía Miguélez Hola !! Es importante cuando se trabaja con Buffers. Lo veremos en breve. Un saludo
Muy buenas, tengo una pequeña duda, y es que no me queda muy claro en qué momento y desde dónde se llama al método toString(). Gracias de antemano y como siempre, felicidades por el curso que es magnífico.
Hola !! No recuerdo ya el código que utilicé en este vídeo, pero el método toString() pertenece a la clase Object así que lo puedes utilizar cuando quieras desde donde quieras. Lo estás heredando siempre. Un saludo!!
Juan, mas que objetos, no te refieres que se pasan las instancias?
+Matias Daneri Si, si si.... así es. Muchas veces a la hora de hablar decimos "objetos" cuando en realidad son instancias de objeto. Es una incorrección que se comete en muchos sitios (foros, incluso libros) y eso hace que uno la cometa también. Seré más preciso en el futuro. Un saludo
Que diferencia hay entre objecto y instancia?
Hola Juan! Gracias por tus videos. Te queria consultar algo. Estuve practicando la serializacion pero en lugar de usar la clase Empleado usé una clase con una sola variable (una frase) y con un metodo toString() que retornaba esa frase.
Al serializar el objeto funciona todo bien, me crea el archivo y todo. El problema es que despues de crear ese objeto recuperado no lo puedo mostrar por consola. Me sale un error en el system.out.println()
Aca el ejemplo:
public static void main(String args[]){
ObjetoSerializable objeto = new ObjetoSerializable();
try {
//Creamos el archivo serializado
ObjectOutputStream buffer_salida = new ObjectOutputStream(new FileOutputStream("C:/Users/...etc.../Objeto serializado.dat"));
buffer_salida.writeObject(objeto);
buffer_salida.close();
//Leemos el archivo serializado
ObjectInputStream buffer_entrada = new ObjectInputStream(new FileInputStream("C:/Users/...etc.../Objeto serializado.dat"));
ObjetoSerializable objeto_recuperado = (ObjetoSerializable) buffer_entrada.readObject();
buffer_entrada.close();
} catch (Exception e) {
System.out.println("Ha fallado el programa.");
}
System.out.println(objeto_recuperado); //ESTA LINEA ME GENERA NullPointerException
}
Ya lo solucioné. Puse el println() dentro del try y funcionó. Igual no se porque el error.
Te da error porque en caso de entrar en el catch, objeto recuperado quedaría vacío ya que le das valor solo en el try (ya sabes que si el flujo entra en el catch es porque ignora el try). En Java debes contemplar todas las posibilidades para que un objeto no quede vacío. Un saludo!
@@pildorasinformaticas oh no me habia dado cuenta! Gracias por responder :D
Hola Juan, acá avanzando como loco con tus cursos, este y el de Android. Una duda existencial: el casting que hiciste, ¿siempre puedo pasar un object a un array de strings o int o a cualquier otro tipo de variable?
No, siempre no, en este caso puede porque el sabe el tipo de objeto que es, entonces el casting es posible, en caso de que no sea posible, tengo entendido que te tira un error de tipo ClassCastException, ya que será una operación que simplemente no es posible.
hola buenas Juan!!! me gustaría saber aproximadamente cuantos vídeos crees que tendrá este curso competo?? o cuando mas o menos crees que lo terminaras?
muchas gracias por el curso!!!
voy por el vídeo 100 y me esta encantado.
daniel dafonte Hola !! El curso tendrá aproximadamente 350 vídeos. Todavía no he comenzado con JEE. Subo varios vídeos todas las semanas y tardará bastante en terminar. Un saludo
@@pildorasinformaticas que tal profe, en la lista de reproduccion hay 278, cual seguiria despues? par poder hacerlo completo
me pone java.io.serialization exception no se que hacer…
super clase cóshmica
Cordial saludo. Quisiera saber si dentro de tu agenda tienes programado realizar un curso de JSF. Gracias.
Roberto de Jesus Morrinson Romero Hola !! En principio no, pero como me proponéis todos los días ver algún tipo de framework, me estoy planteando ver alguno/s
Un saludo
pildorasinformaticas Gracias por tu respuesta. Sería genial de Primefaces. ¿Cuanto cobrarias por un curso particular de JSF? Me interesa aprenderlo. Gracias.
Ok, tomo en cuenta tu sugerencia. Lamentablemente no tengo tiempo para cursos particulares por muy atractiva que sea la oferta. Un saludo
si lo hago en un array list y quiero eliminar un dato. puedo?
Gracias Juan por tus cursos! Tengo un pequeño inconveniente: me aparece un error este el siguiente condigo: Administrador jefe= new Administrador("Juan", 80000, 2005,12,15); El mensaje de error es el sgt: No enclosing instance of type Serializando is accessible. Must qualify the allocation with an enclosing instance of type Serializando (e.g. x.new A() where x is an instance of
Serializando). Q podria ser el error? se le agradecería una pronta respuesta.
Es un tema de cierre de llaves. A mi me pasó igual y después me di cuenta de que me faltaba la llave de cierre de la clase que contiene el método main y a esa instancia de la clase Administrador. Saludos!!
Muchas gracias!!!!!
Hola . Serializar es similar al consepto de Persistencia?
Hola !! No, la persistencia de datos no tiene que ver con la serialización. Explicarte por escrito qué es la serialización es largo. Si miras los vídeos donde hablo de la serialización lo entenderás. Un saludo!!
gracias profe
alguien que me pueda ayudar quiero serializar listas enlazadas como por ejemplo una lista simple pero en una clase tengo la lista propiamente dicha y en otra los nodos, he implementado la interfaz en ambas clases y si serializa pero a la hora de deserializar ¿debo desserializar solamente la lista ? ó ¿la lista con los nodos por aparte? cual de los dos
En caso de que los nodos estén dentro de la clase de las listas (como clase interna) o como clase externa pero instanciada dentro de la clase de la lista, entonces solo la lista, en caso de ser dos clases separadas (dentro del código), entonces 1 por 1.
Alguien sabe como deserializar un archivo que tengo en javaserilizeddata???
Como se hace con un MAP ??
disculpa cual es la paguina que visitas?? para apoyarte
Hola !! No se a qué te refieres con la página que visito. Tengo página web personal si te refieres a eso: www.pildorasinformaticas.es Un saludo!!
Hola, es la API (Application Programming Interface) de Java. Es el "instructivo" de todas las clases del lenguaje. Saludos.
Creo que hay un error en el incentivo, ya que se pone, pero luego no se aplica.
+Jose Bedmar bueno es que está utilizando el parámetro directamente, y no el método getSueldo(), que es donde se actualiza el sueldo.
❤❤❤
Excelente!
Muy buenos tutoriales profesor, tiene usted cursos en Udemy? Me gustaría invertir en sus cursos de ser así
Tengo un curso de Java en Udemy (en elaboración, vamos por el vídeo 171 y se suben nuevos vídeos todas las semanas) que se llama "Java desde 0". Puedes buscarlo también por autor "Juan Díaz". Viene con ejercicios, test, documentación PDF y por supuesto resolución de dudas. Un saludo!
@@pildorasinformaticas muchas gracias, ya voy a terminar mis clases de verano para darle caña a su curso
No acabo de entender para que sirve hacer que una clase implementa la interfaz Serializable no tiene ningun método. Se puede serializar un objeto sin necesidad de que este objeto implemente la interfaz Serializable.
Es simplemente un requisito a cumplir, no hace falta que implemente métodos la interfaz, sino que sirve como condición para que una clase pueda pasarse a bytes, asumo yo que no viene incorporada la metodología para todas las clases, ya que el hecho de implementar la interfaz, consume recursos, y si no vas a serializar objetos de una clase, no hay que consumir innecesariamente recursos implementando la interfaz en esa clase.
SI-PERO NO DICE COMO SACAR UNA IMAGEN DE UNA BASE DE DATOS MYSQL CON JAVA EN ECLIPSE
en jframe como seria?
Necesitaría dos vídeos para explicártelo o escribir por aquí 500 líneas de código. Pero en mis vídeos dedicados a Swign se explica lo necesario para que puedas hacer transferir objetos entre JFrames. Un saludo!!
Genial
Henry Alexander Gonzalez Duque Gracias !! Un saludo
Hay curso de JavaFX?
eso es para geys :v
Todos los caminos llevan a Roma for (pildorasinformaticas i : :))
jejejeje como pueden ver no me a escrito absolutamente nada
debio ser un error
muy buen video psd