✅✅ ✅ ✅ ✅ 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. 💥💥💥
mi mas sincera enhorabuena estoy en el grado superior de DAW y no hay en toda la red ni un solo video que pueda igualar la calidad de tus videos ni la forma tan sencilla que tienes de transmitir tus conocimientos. Un saludo y muchas gracias
Yo también me encuentro cursando DAW, y es el propio profesor el que nos remite a tu curso constantemente para aclarar conceptos. Has hecho un trabajo excelente.
Este es sin duda alguna mi bloque favorito! Que ilusión hace abrir una aplicación propia y que los datos sigan estando ahí!! Es magia.... Hace mas de una año descubrí este fantástico canal buscando precisamente esta información. Me gustó tanto la forma de abordarlo de Juan que decidí comenzar el que para mi es el cuarto curso de Java. Y aquí estoy de nuevo. Voy a repetir el bloque porque seguro que ahora con más experiencia le sacaré mas jugo. Y a seguir!!
Muy agradecido por tu excelente trabajado, Juan. Empecé con tu curso de Python hace cosa de mes y medio, y viendo la calidad (y que el de Python está aún en desarrollo) me animé a aprender Java. Y aquí estoy, ¡a mitad de curso ya! Bien, también escribo para los compañeros que siguen el curso y se encuentran con que el primer carácter no se imprime y al final les aparece el carácter '?'. Probando vi que alterando el orden de declaración dentro del "while" se corregían. Simplemente declarando la variable "letra" antes, quedando del siguente modo el contenido del "while": while(c!=-1) { char letra=(char)c; c=entrada.read(); System.out.print(letra); } Nada más. Un saludo.
Alegrate Juan, eres uno de los mejores maestros de youtube! saludos desde Venezuela! he conseguido un trabajo de backend en c# y me encontre con algunos streams que no sabia para que eran, gracias a tu explicacion he quedado claro. animo, sigue adelante.
Juan, estoy actualmente en el grado superior de desarrollo de Aplicaciones Multiplataforma y Programacion de Servicios y Procesos, y desde que descubri tus videos, estoy aprendiendo realmente ya que tienes una forma tan clara de explicar las cosas que ni mis pofesores son capaces, contigo me entero de todo a la perfeccion y ya he seguido el curso de Android y estoy ahora con algunas dudas de Java y veo videos de este curso salteados, pero de veras que eres una maravilla explicando y tansmitiendo, felicidades por el canal y por supuesto que seguire viendo tus videos por que asi da gusto aprender Programación. Un saludo y muchas gracias!
Hola Profesor Juan, mil gracias por tanto aporte de sus conocimientos, sinceramente invaluable todo lo que nos ha enseñado hasta este video y como usted dice, ya se va viendo la luz, gracias de nuevo. Un comentario para todos los que tengan problemas en ubicar sus archivos, en el archivo donde lo hayan creado, como en el ejemplo.txt de este video, denle click con el boton derecho y se van hasta el final de la pantalla en propiedades y dan click de nuevo ahi y buscan la palabra Ubicacíon y les muestra la ruta del archivo y la pueden copiar de ahi mismo sustituyendo los backslash "\" por el slash "/", agregar el nombre del archivo y es todo, saludos PD. tambien gracias a los comentarios de varios seguidores de este curso, que son de mucha ayuda para resolver dudas o problemas a los fallos que suelen suceder al poner a funcionar los scripts(programas o codigos) de estos videos.
Jose Manuel, eres un crack. Llevo años sin programar, he querido volver a ponerme las pilas, he encontrado tu curso de java, y ha sido como volver a 1º de carrera. No sabes cuanto te agradezco lo que te has currado estos cursos y lo bien que me están viniendo. Un saludo!
Buenas Tardes, Como siempre Profesor Juan Díaz, Excelente la clase inputStreamReader..Gracias como siempre...Encantado todos los días Comprendo más y Aprendo mas....
Hola Juan, como observacion al iniciar la variable 'c' antes de entrar al bucle y luego volviendole asignar esta avanzando al segundo caracter del texto, en tu ejecucion no se vio la diferencia porque tu texto inicia en la segunda posicion de la primera linea , pero si hubieras empezado en la primera posicion, no se hubiera mostrado la letra "E" de "estamos ...", solucion asignar el valor ya sea despues del casting a letra o bien antes del cierre del bucle.... Saludos!
Me he encontrado un pequeño error, que puede que sea culpa mía. Me explico En el programa, asignas a 'c' una vez el método read, y luego vuelves a hacerlo en el bucle "mientras no sea -1" En mi caso al menos, veo que esto elimina el primer carácter del texto. Simplemente cambiando el orden de la asignación, y poniendo el "print" antes de la nueva lectura "read" se consigue que se imprima el primer carácter, y que además no se imprima el último que es -1 Entiendo que cada vez que invocas a read() se lee un nuevo carácter, al inicial la variable lo haces por primera vez, pero dentro del bucle lo haces de nuevo, lo que provoca la perdida del primer carácter que queda sin imprimir. Lo mismo yo me estoy liando, y soy consciente de que el vídeo tiene ya mas de un año, pero quería comentar ese extremo.
Es cierto, no me di cuenta del espacio en blanco del al inicio del archivo de texto. Por si a alguien le sirve funciona también si antes del bucle while ponemos: int c=0; Saludos!
Para saber el código de un carácter se puede hacer: System.out.println(1 * 'u'); que imprime: 117. Se puede comprobar haciendo: System.out.println((char)117);
Muchas gracias por el tutorial Profesor, Para quienes no les imprime la letra del principio y evitar imprimir el ?, se soluciona haciendo esto: while(c!=-1){ char letra = (char) c; System.out.print(letra); c = entrada_fichero.read(); }
@Susuya Juuzou Pero te sigue saliendo la última interrogación. El aporte del compañero está bien, yo venía a poner el mismo comentario con el mismo código
Nomas una observación, en el vídeo mencionas que usaras el primer constructor de la clase FileReader que recibe como argumento un objeto de tipo File, cuando en realidad usas el tercer constructor de la clase FileReader que recibe como argumento un objeto de tipo String.
Hola profe, creo que la interrogante "...java?" corresponde a que antes del while ya hemos leido c=entrada.read(). Por tanto creo dentro del while debia moverse al final del loop. Gracias...
Una duda: por qué en el minuto 22:38 le permite hacer referencia a una clase no estática desde el main. Hasta donde yo sé, desde el main sólo pueden referenciarse clases estáticas.
Para hacerlo más simple sin tener que recurrir a otra clase: (hago el tratamiento de errores por separado, así como el import de las distintas clases) package leyendo; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class Acceso_Fichero { public static void main(String[] args) { try { FileReader entrada = new FileReader("c:/ejemplo.txt"); // suponiendo que el archivo se encuentra en esa ruta int c = entrada.read(); while(c != -1 ) { System.out.println(c); c = entrada.read(); } entrada.close(); } catch (FileNotFoundException e) { //e.printStackTrace(); System.out.println("File not found"); } catch (IOException e) { //e.printStackTrace(); System.out.println("Unable to read file"); } } }
Ideal el video pongo otra forma de hacerlo que salga la letra con su unicode usando la clase Scanner quedaria asi el metodo. VOy a seguir hasta finalizarlos todos estoy enganchado ...Gracias por el curso .... public void lee2() {
try {
Scanner entrada2 = new Scanner(new File("fichero1.txt"));//Poner la direción del fichero completa
if(entrada2.hasNext()) { // mientras entrada2 tenga una palabra
String palabra = entrada2.next();//guarde la palabra en un string
Fabuloso video como siempre, pero creo que hay un pequeño error en el código…el primer carácter del archivo no lo imprime ya que esta fuera del while, en el video sale bien porque el archivo txt del profe empieza con un espacio en blanco. Creo que sería mejor así: int c ; while((c = entrada.read())!=-1) { System.out.println((char)c); }
Otra manera de leer archivos, utilizando la clase Scanner: public void lee(){ try { Scanner sc = new Scanner(new File("aqui pones la ruta")); System.out.println(sc.nextLine()); sc.close(); } catch (IOException e) { System.out.println("No se ha encontrado el archivo"); } }
Primero, muy buen video profesor. Ahora una duda que no estoy logrando contestarla. ¿Por qué en el método lee() no coloca el throws FileNotFoundException para lazar la excepción? y solo coloca el try catch para capturarla. Capaz estoy con algún error de concepto
hola pildorasinformaticas como puedo leer con streams una parte de texto de una pagina en internet por ejemplo leer un comentario de facebook de un determinado post........ gracias por todos los cursos.
En el minuto 13:40 ¿Hay que especificar siempre la ruta? Si tienes el archivo.txt guardado dentro del package, no hay ruta por defecto? Pj: FileReader entrada =new FileReader("archivo.txt"); Lo intente así pero no me deja :/ Así te ahorras de poner siempre un tocho de ruta. Graicas
Vale, me autorespondo, se puede hacer como dije pero el dicho archivo.txt tiene que estar (No en el package) si no que dentro del proyecto para poder usar esta ruta por defecto :) Sposibo ;)
Hola, lo primero, muchas gracias por tus videos y compartirlos con nosotros. Todavía voy por capítulos mas atrasados y no por estos videos, pero ya que veo que estas ahora con el tema de acceder a ficheros, te quería preguntar si en algún momento del curso verremos manejo de ficheros que puedan estar almacenados en la nube, por ejemplo, en dropbox o google drive. Saludos y gracias
Buenas noches querido profesor, De antemano lo felicito por su gran curso, he aprendido mucho, voy en el vídeo 120. Profesor una pregunta, con todo el respeto hacia usted, tal vez ya se la hayan hecho, cuando comenzara con JSP ? .Ya que tengo entendido que hoy en dia el 90% de los programas son realizados en la web. Gracias profe por su respuesta.
Lucas Nore Hola !! Gracias por el comentario. No tardaremos mucho en comenzar la segunda parte del curso: JEE. Entonces veremos todo lo relativo a BBDD, JSP, comunicaciones por red etc. Un saludo
Hola clase, me ha salido un error inesperado en la linea FileReader entrada=new FileReader("d:\\Users\\jchangir\\Desktop\\ejemplo.txt"); Invalid escape sequence (valid ones are \b \t \f \" \' \\ ) pues lo solucioné colocando doble barra en la ruta, la explicación, investigando en google es la siguiente: El carácter de barra invertida \es un carácter de escape en Java. El compilador piensa que usted está tratando de escapar del siguiente carácter, y \_es una secuencia de escape no válida. Es necesario para escapar de la propia barra inversa. Vuelva a colocar todos los \con \\. Eso no lo sabia, por si acaso a alguien le ocurre.
Hace tiempo que grabé este vídeo y no recuerdo exactamente qué ejemplo puse en él. Pero los streams de datos no solo se utilizan o aplican con tipos primitivos. También se aplican con objetos. Y si, necesitarás la clase File para la lectura y escritura de ficheros. Un saludo!!
Una duda. Por qué en el fichero el primer carácter no lo coge al darle la consola y de ahí que que tengas que hacer un espacio para que si te salga el siguiente? No sé si me explico
Tienes que cambiar el orden en el que se lee el archivo en el while. En el vídeo hay un pequeño error de logica donde primero se lee la información sin haber impreso la información ya leída, por eso el hecho de que tengas que poner un espacio al principio del archivo. Solo tienes que sustituir en el bucle while: while (c != -1) { c = entrada.read(); char letra = (char) c; System.out.print(letra); } Por esto: while (c != -1) { char letra = (char) c; System.out.print(letra); c = entrada.read(); } Es cuestión de ver el orden en el que se ejecuta cada instrucción e incluso evitas el problema en el que al final siempre vas a tener un carácter desconocido "?" ya que en programación es el carácter especial que especifica el final de un archivo denominado "EOF" (End of File).
Ya me va quedando menos para cogeros. Lo primero disculpa por no ir poniendo todos los likes, se me olvida estoy tan concentrado que quiera mas capítulos. Y quería hacerte una pregunta en mac a la hora de seleccionar los ficheros como introduzco las rutas. Un saludo. Gracias
Hola profesor. Ante todo felicitarle y darle las gracias por estos cursos. Nunca antes he realizado una consulta, pues de una manera u otra he ido resolviendo los problemas que han ido surgiendo, pero ahora no doy con el error. He repasado el código una y otra vez y no veo dónde estoy fallando. ¿En qué consiste el error? Pues en que en la consola no me apacere el primer carácter, es decir sale "stamos estudiando streams de java" ¿Alguna idea? Gracias de nuevo y unn cordial saludo.
+Joan Josep Ciria Yo tambien tengo ese error, lo que no me di cuenta es que .read devuelve el primer carácter leido. Osea, cada vez que usas .read va devolviendo el próximo carácter. Al usarlo fuera y luego dentro del while, la primer letra no se guarda.
Buenas a todos! y muchas gracias Juan!! Me pasa algo raro, en la consola no me imprime el primer caracter y además, al ultimo lo reemplaza por un signo de pregunta (?). Me imprime: stamos estudiando Streams Java? en lugar de Estamos estudiando Streams Java. Les dejo el código por si alguno ve el error. Saludos!! package leyendo; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class Acceso_Fichero { public static void main(String[] args) { // TODO Auto-generated method stub
Leer_Fichero accediendo = new Leer_Fichero();
accediendo.lee(); } } class Leer_Fichero{
public void lee() {
try {
FileReader entrada = new FileReader("C:/Users/DaniO/Documents/Dani/Programación/AccesoFicheros/Ejemplo_I.txt");
int c = entrada.read();
while (c != -1) {
c = entrada.read();
char letra = (char)c;
System.out.print(letra);
}
} catch (IOException e) { // TODO Auto-generated catch block //e.printStackTrace(); System.out.println("No se ha encontrado el archivo"); }
Hola, antes que nada muy agradecido por este excelente curso. Me surge el siguiente problema: Los archivos con extensión .txt los reconoce bien y los puedo leer, pero no así con los archivos word .docx. Alguna solucion? Estoy utilizando el mismo ejemplo del video. Igualmente supongo que debo seguir avanzando en el curso para descubrirlo jeje Muchas gracias!
Para ficheros que no son de texto plano (txt) sino que llevan formatos, estilos y más cosas (docx), no es tan sencillo. Mira este enlace a ver si te puede servir de ayuda: zzantares.blogspot.com/2012/01/leer-un-archivo-word-con-java.html Un saludo!
@@pildorasinformaticas Muchas gracias por la respuesta! me fue de gran utilidad. De momento voy a seguir avanzando en el curso por lo menos hasta tratar el acceso a bbdd y manejo de librerías, lo cual tendria mas sentido antes de poner en práctica ese ejemplo. Saludos!
perdon si es una pregunta tonta. pero como java entiende cuando hay un salto de linea para pintar la siguiente si esta en una sola dimension el array de enteros. y no veo ningun caracter especial, gracias.
muy buen curso Juan pero tengo una pregunta, tu usas FileReader pero no Reader ni inputStreamReader ¿como saber que clase usar, o es que se usa el ultimo de la herencia que es el que hereda de los demas? quisiera saber eso. Gracias
En general, si utilizas la última clase dela herencia te irá bien (aunque no siempre). ¿Cómo saberlo? leyendo la API para saber qué hace cada clase o consultando a Google si no tienes la suerte de que un profesor te lo diga en un curso. No hay otra alternativa. Un saludo!
Hola, estoy tomando el curso en tu pagina web... pero no vi como comincarme contigo, entonces entre por youtube... tengo un problema.. public void lee(){ try { 1 FileReader entrada = new FileReader("C:\Users\Peter Fraga\\Desktop\archivo.txt"); 2 int c = entrada.read(); 3 while (c!=-1){ 4 5 c =entrada.read(); 6 char letra = (char)c; 7 System.out.print(letra); } } catch (IOException e) { e.printStackTrace(); String s = e.getMessage(); System.out.println("No se ha encontrado el archivo" +s); } } el output es : stamos estudiando streams de java hago el debug y veo la "e", pero no la imprime el caracter "e" lo veo al entrara en linea 5, pero al ejecutar la linea 5, al ir la linea 6 cambia a "s" y eso graba... anteriormente cuando era el byte si imprima el 101 que es el valor de la "e"
Hola en el String donde especificas la ruta del File usá la constante de clase File.separetor . Por ejemplo yo tengo los archivos de texto almacenados en la raíz del proyecto en una carpeta llamada misArchivosDeTexto, entonces el String del path lo escribo así: FileReader entrada = new FileReader(new File("misArchivosDeTexto"+File.separetor+"archivo.txt") Espero haberte ayudado. Saludos.
Alguien me podría decir cómo funciona read() Osea, quiere decir que si lo llamo una vez regresa un carácter, para la segunda vez el siguiente y así Sin necesidad de decirle que carácter quiero que me devuelva?
por alguna razón está ocurriendo el error FileNotFoundException. al principio pensaba que era porque mi nobre de usuario tiene un acento y tal vez por eso ocurriera el error, pero trate poniendo el archivo de pruebas en un directorio mas directo y tampoco funciona =/
+Miguel S Sin poder verlo es difícil que te pueda ayudar con esto. Lo único que se me ocurre decirte es que revises bien el nombre y la extensión del archivo. Un saludo
Sí, tranquilo, gracias por estar pendiente. Por alguna razón no podía hacer referencia a archivos en el disco C, pero haciendo referencia a un archivo en otro disco si ha funcionado
Alguien me ayuda?! porque cuando compilo y ejecuto el programa desde una consola me salta un error diciendo "no se ha encontrado o cargado la clase principal"
Tengo una duda, yo lo que hice fue crear otro paquete dentro del mismo proyecto llamado Recursos y llame a mi texto Fichero, entonces en la dirección puse "Recursos/Fichero.txt" pero me salia que el archivo no se habia encontrado. Alguien sabe como solucionar eso? Cual es la direccion que debo colocar PD: Ya probe copiendo y pegando la direccion entera del archivo pero ni asi funciona.
Yo he conseguido quitar el error, creando un archivo de texto sin más con el bock de notas y lo guardé desde el propio programa. Volví a escribir la ruta, eso sí con doble barra. (Te transcribo y trocito de mi ruta \\PildorasInformaticas\\ejemplo.txt) y desapareció el problema.
Lo bueno, si breve, dos veces bueno: import java.io.FileReader; import java.io.IOException; public class AccesoFichero { static FileReader reader; public static void main (String[] args) throws IOException { reader = new FileReader("/home/db/Desktop/file.txt"); int i = 0; while (reader.read() != -1) { System.out.print((char) i); } reader.close(); } }
✅✅ ✅ ✅ ✅ 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. 💥💥💥
mi mas sincera enhorabuena estoy en el grado superior de DAW y no hay en toda la red ni un solo video que pueda igualar la calidad de tus videos ni la forma tan sencilla que tienes de transmitir tus conocimientos. Un saludo y muchas gracias
+boris quick Muchas gracias por tu comentario. Me alegro de que te gusten los vídeos. Suerte en el DAW. Un cordial saludo
Yo también me encuentro cursando DAW, y es el propio profesor el que nos remite a tu curso constantemente para aclarar conceptos.
Has hecho un trabajo excelente.
La verdad que el explica perfecto
@@Osedread Hago DAM y la profesora no hace ni el webo, nos pone vídeos de pildorasinformaticas y programacion ATS.
que tal te va despues de hacer el grado? Yo estoy ahora haciendolo y no se que tal sera luego de terminarlo algun consejo o algo porfa
Es el curso de java mas completo de todo youtube para hispanohablantes, y el mejor explicado, en serio muchas gracias.
Este es sin duda alguna mi bloque favorito! Que ilusión hace abrir una aplicación propia y que los datos sigan estando ahí!! Es magia....
Hace mas de una año descubrí este fantástico canal buscando precisamente esta información. Me gustó tanto la forma de abordarlo de Juan que decidí comenzar el que para mi es el cuarto curso de Java. Y aquí estoy de nuevo. Voy a repetir el bloque porque seguro que ahora con más experiencia le sacaré mas jugo. Y a seguir!!
Muy agradecido por tu excelente trabajado, Juan. Empecé con tu curso de Python hace cosa de mes y medio, y viendo la calidad (y que el de Python está aún en desarrollo) me animé a aprender Java. Y aquí estoy, ¡a mitad de curso ya!
Bien, también escribo para los compañeros que siguen el curso y se encuentran con que el primer carácter no se imprime y al final les aparece el carácter '?'. Probando vi que alterando el orden de declaración dentro del "while" se corregían. Simplemente declarando la variable "letra" antes, quedando del siguente modo el contenido del "while":
while(c!=-1) {
char letra=(char)c;
c=entrada.read();
System.out.print(letra);
}
Nada más. Un saludo.
Me siento muy afortunado de haber encontrado sus vídeos. Estoy reaprendiendo mucho Java con usted. Muchas gracias. Un saludo
Alegrate Juan, eres uno de los mejores maestros de youtube! saludos desde Venezuela! he conseguido un trabajo de backend en c# y me encontre con algunos streams que no sabia para que eran, gracias a tu explicacion he quedado claro. animo, sigue adelante.
Juan, estoy actualmente en el grado superior de desarrollo de Aplicaciones Multiplataforma y Programacion de Servicios y Procesos, y desde que descubri tus videos, estoy aprendiendo realmente ya que tienes una forma tan clara de explicar las cosas que ni mis pofesores son capaces, contigo me entero de todo a la perfeccion y ya he seguido el curso de Android y estoy ahora con algunas dudas de Java y veo videos de este curso salteados, pero de veras que eres una maravilla explicando y tansmitiendo, felicidades por el canal y por supuesto que seguire viendo tus videos por que asi da gusto aprender Programación. Un saludo y muchas gracias!
Hola
Profesor Juan, mil gracias por tanto aporte de sus conocimientos, sinceramente invaluable todo lo que nos ha enseñado hasta este video y como usted dice, ya se va viendo la luz, gracias de nuevo.
Un comentario para todos los que tengan problemas en ubicar sus archivos, en el archivo donde lo hayan creado, como en el ejemplo.txt de este video, denle click con el boton derecho y se van hasta el final de la pantalla en propiedades y dan click de nuevo ahi y buscan la palabra Ubicacíon y les muestra la ruta del archivo y la pueden copiar de ahi mismo sustituyendo los backslash "\" por el slash "/", agregar el nombre del archivo y es todo, saludos
PD. tambien gracias a los comentarios de varios seguidores de este curso, que son de mucha ayuda para resolver dudas o problemas a los fallos que suelen suceder al poner a funcionar los scripts(programas o codigos) de estos videos.
Gracias por tu comentario y por el consejo. Un saludo!!
Eres un gran maestro, lo explicas muy bien y con mucho detalle, te lo agradezco infinitamente. Te deseo enormes bendiciones.
Jose Manuel, eres un crack. Llevo años sin programar, he querido volver a ponerme las pilas, he encontrado tu curso de java, y ha sido como volver a 1º de carrera. No sabes cuanto te agradezco lo que te has currado estos cursos y lo bien que me están viniendo.
Un saludo!
El mejor maestro de Java en toda la red, saludos y muchas bendiciones.
Gracias !! Un cordial saludo
En 25 minutos ya se extraer datos de un fichero. En 5 horas en clase aún no he aprendido nada. Eres un crack, Juan!!!!!!
Hola, incluso a día de hoy te agradezco muchísimo que hayas creado esta serie de vídeos para compartir tus conocimientos sobre java.
Muchas gracias por el contenido, como siempre atento a todos tus cursos impartidos por que explicas muy bien, muy claro.
DEFINITIVAMENTE, ESTE VIDEO ES UNA EXPLICACIÓN MAGISTRAL. FELICITACIONES Y GRACIAS MAESTRO.
Excelente curso, entendible al maximo.
y si no me equivoco es el unico que he visto que usa la documentación oficial de Java.
Felicitaciones.
+Gonzalo Marambio Gracias !! Me alegro de que te guste, Un saludo
Tu explicación es muy completa y está muy bien explicado. Que buena pedagogía tienes! Mil gracias.
Buenas Tardes, Como siempre Profesor Juan Díaz, Excelente la clase inputStreamReader..Gracias como siempre...Encantado todos los días Comprendo más y Aprendo mas....
Hola Juan, como observacion al iniciar la variable 'c' antes de entrar al bucle y luego volviendole asignar esta avanzando al segundo caracter del texto, en tu ejecucion no se vio la diferencia porque tu texto inicia en la segunda posicion de la primera linea , pero si hubieras empezado en la primera posicion, no se hubiera mostrado la letra "E" de "estamos ...", solucion asignar el valor ya sea despues del casting a letra o bien antes del cierre del bucle.... Saludos!
hola profesor juan he aprendido con tus excelentes explicaciones , apesar de no saber nada de programacion me encanta muchas gracias
Te explicas de maravilla, me estoy enterando de todo, lo explicas todo de una forma muy simple y se entiende muy bien, muchas gracias por el curso!!!
Muy buen video como siempre usted profe. saludos desde Argentina.
gracias por tus vídeos me ayudan mucho en la universidad.
Me he encontrado un pequeño error, que puede que sea culpa mía. Me explico
En el programa, asignas a 'c' una vez el método read, y luego vuelves a hacerlo en el bucle "mientras no sea -1"
En mi caso al menos, veo que esto elimina el primer carácter del texto.
Simplemente cambiando el orden de la asignación, y poniendo el "print" antes de la nueva lectura "read" se consigue que se imprima el primer carácter, y que además no se imprima el último que es -1
Entiendo que cada vez que invocas a read() se lee un nuevo carácter, al inicial la variable lo haces por primera vez, pero dentro del bucle lo haces de nuevo, lo que provoca la perdida del primer carácter que queda sin imprimir.
Lo mismo yo me estoy liando, y soy consciente de que el vídeo tiene ya mas de un año, pero quería comentar ese extremo.
Gracias me ha servido
Cierto, en el archivo de texto del ejemplo se habia dejado, convenientemente, un espacio en blanco, al inicio.
Gracias por la observación, esto ayuda a los que están llegando a esta parte del curso.
Es cierto, no me di cuenta del espacio en blanco del al inicio del archivo de texto. Por si a alguien le sirve funciona también si antes del bucle while ponemos: int c=0;
Saludos!
gracias!!
gracias profe por estos videos que tienen mucha conocimiento
Excelente curso profr. me ayudo a hacer el ejercicio de una manera sencilla. Muchisimas gracias !!!!
Gracias Juan. Tenía la duda de si funcionaba con archivos de texto con más de una línea, pero luego comprobé que también sirve. Saludos.
Antonio Jenaro Rodriguez: Gracias por el comentario. Creo recordar que la duda se resuelve en el siguiente vídeo. Si no es así, me lo dices. Un saludo
Que gran video, lo explicas de la mejor manera posible y me viene genial para repasar un examen
Like por el final inesperado
Eres impresionante, muchisimas gracias por esto
Genio!, saludos desde Argentina.
Saludos!
Para saber el código de un carácter se puede hacer:
System.out.println(1 * 'u');
que imprime: 117. Se puede comprobar haciendo:
System.out.println((char)117);
Muchas gracias, lo haces tan fácil de entender. MUCHAS GRACIAS
Excelente la explicación Pildoras
Excelente. muchas gracias desde Guatemala.
Gracias a ti por seguir mis vídeos. Un saludo!!
Muchas gracias por el tutorial Profesor,
Para quienes no les imprime la letra del principio y evitar imprimir el ?, se soluciona haciendo esto:
while(c!=-1){
char letra = (char) c;
System.out.print(letra);
c = entrada_fichero.read();
}
Gracias por el aporte, me diste una gran solución.
@Susuya Juuzou Pero te sigue saliendo la última interrogación. El aporte del compañero está bien, yo venía a poner el mismo comentario con el mismo código
Excelente, gracias!!! Chévere cambur!!!
Nomas una observación, en el vídeo mencionas que usaras el primer constructor de la clase FileReader que recibe como argumento un objeto de tipo File, cuando en realidad usas el tercer constructor de la clase FileReader que recibe como argumento un objeto de tipo String.
Bucnas Tardes. Muchas Gracias como seimpre. Excelente Clase.
exelente trabajo, de mucha ayuda...
Muy buen video, este curso es genial animooo :) ¡¡¡¡
Muy sabio, muy sabio :)
estoy muy agradecido,
gracias ....
Genial explicación.
Hola profe, creo que la interrogante "...java?" corresponde a que antes del while ya hemos leido c=entrada.read(). Por tanto creo dentro del while debia moverse al final del loop. Gracias...
Una duda: por qué en el minuto 22:38 le permite hacer referencia a una clase no estática desde el main. Hasta donde yo sé, desde el main sólo pueden referenciarse clases estáticas.
Para hacerlo más simple sin tener que recurrir a otra clase:
(hago el tratamiento de errores por separado, así como el import de las distintas clases)
package leyendo;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Acceso_Fichero {
public static void main(String[] args) {
try {
FileReader entrada = new FileReader("c:/ejemplo.txt"); // suponiendo que el archivo se encuentra en esa ruta
int c = entrada.read();
while(c != -1 ) {
System.out.println(c);
c = entrada.read();
}
entrada.close();
} catch (FileNotFoundException e) {
//e.printStackTrace();
System.out.println("File not found");
} catch (IOException e) {
//e.printStackTrace();
System.out.println("Unable to read file");
}
}
}
Ideal el video pongo otra forma de hacerlo que salga la letra con su unicode usando la clase Scanner quedaria asi el metodo.
VOy a seguir hasta finalizarlos todos estoy enganchado ...Gracias por el curso ....
public void lee2() {
try {
Scanner entrada2 = new Scanner(new File("fichero1.txt"));//Poner la direción del fichero completa
if(entrada2.hasNext()) { // mientras entrada2 tenga una palabra
String palabra = entrada2.next();//guarde la palabra en un string
for(int i =0; i
Perdonar cambiar el if (entrada2.hasNext()); por un while(entrada2.hasNext()); con el if solo evalua la 1º palabra con el while todas.
puedo acceder a un fichero que tenga en la nube? para manejar la informacion mas libremente?
gracias...
eres excelente!
Fabuloso video como siempre, pero creo que hay un pequeño error en el código…el primer carácter del archivo no lo imprime ya que esta fuera del while, en el video sale bien porque el archivo txt del profe empieza con un espacio en blanco. Creo que sería mejor así:
int c ;
while((c = entrada.read())!=-1)
{
System.out.println((char)c);
}
Lo siento me he precipitado...se soluciona en el siguiente video :P
@@davidmarver gracias!!
Estaba viendo ese error, y en este hilo veo la solucion gracias por avisar socio
Excelente video. Más allá de la API propia de Java... Podrías recomendar bibliografía que contenga estos temas sobre persistencia, archivos y demás?
Foro stackoverflow y libros "Core Java" de editorial Prentice Hall. Un saludo!
pildorasinformaticas muchas gracias
FileReader es una clase interna ¿No se supone que las clases internas no se pueden inicializar fuera de la clase?
Una pregunta, como es posible que la variable char pueda transformar un numero unicode?
Me encantó el vídeo, gracias
Me equivoqué de vídeo :v
Pero este vídeo también está bueno
Otra manera de leer archivos, utilizando la clase Scanner:
public void lee(){
try {
Scanner sc = new Scanner(new File("aqui pones la ruta"));
System.out.println(sc.nextLine());
sc.close();
} catch (IOException e) {
System.out.println("No se ha encontrado el archivo");
}
}
Te llevas un like como una catedral
Primero, muy buen video profesor. Ahora una duda que no estoy logrando contestarla. ¿Por qué en el método lee() no coloca el throws FileNotFoundException para lazar la excepción? y solo coloca el try catch para capturarla. Capaz estoy con algún error de concepto
hola pildorasinformaticas como puedo leer con streams una parte de texto de una pagina en internet por ejemplo leer un comentario de facebook de un determinado post........ gracias por todos los cursos.
En el minuto 13:40 ¿Hay que especificar siempre la ruta?
Si tienes el archivo.txt guardado dentro del package, no hay ruta por defecto?
Pj: FileReader entrada =new FileReader("archivo.txt");
Lo intente así pero no me deja :/
Así te ahorras de poner siempre un tocho de ruta.
Graicas
Vale, me autorespondo, se puede hacer como dije pero el dicho archivo.txt tiene que estar (No en el package) si no que dentro del proyecto para poder usar esta ruta por defecto :)
Sposibo ;)
hola y en el caso de lectura de un disco de unidad de red_
Hola, lo primero, muchas gracias por tus videos y compartirlos con nosotros. Todavía voy por capítulos mas atrasados y no por estos videos, pero ya que veo que estas ahora con el tema de acceder a ficheros, te quería preguntar si en algún momento del curso verremos manejo de ficheros que puedan estar almacenados en la nube, por ejemplo, en dropbox o google drive. Saludos y gracias
Buenas noches querido profesor,
De antemano lo felicito por su gran curso, he aprendido mucho, voy en el vídeo 120. Profesor una pregunta, con todo el respeto hacia usted, tal vez ya se la hayan hecho, cuando comenzara con JSP ? .Ya que tengo entendido que hoy en dia el 90% de los programas son realizados en la web. Gracias profe por su respuesta.
Lucas Nore Hola !! Gracias por el comentario. No tardaremos mucho en comenzar la segunda parte del curso: JEE. Entonces veremos todo lo relativo a BBDD, JSP, comunicaciones por red etc. Un saludo
pildorasinformaticas Queria consultarle si tocara JSF que es lo mas usado ahora muchas gracias por su curso
No lo tenía previsto en principio, pero me lo han mencionado ya varias veces. Intentaré verlo en el curso.
Hola por favor tienes documentación sobre cómo usar los streams en Android por favor
gran trabajo !! gracias :D
Hola Profe,
Se puede abrir con Java un archivo generado con QBasic??
Hola clase, me ha salido un error inesperado en la linea
FileReader entrada=new FileReader("d:\\Users\\jchangir\\Desktop\\ejemplo.txt");
Invalid escape sequence (valid ones are \b \t
\f
\" \' \\ )
pues lo solucioné colocando doble barra en la ruta, la explicación, investigando en google es la siguiente:
El carácter de barra invertida \es un carácter de escape en Java. El compilador piensa que usted está tratando de escapar del siguiente carácter, y \_es una secuencia de escape no válida. Es necesario para escapar de la propia barra inversa. Vuelva a colocar todos los \con \\.
Eso no lo sabia, por si acaso a alguien le ocurre.
Gracias por el aporte. Un saludo!!
yo le hice con barra "/" y funcionó también.
Gracias
hola. tengo un problema, y es que no me imprime la primera letra del archivo.
una consulta este proceso solo se le hace a datos primitivos eso lectura y escritura de texto es con file verdad o estoy equivocado
Hace tiempo que grabé este vídeo y no recuerdo exactamente qué ejemplo puse en él. Pero los streams de datos no solo se utilizan o aplican con tipos primitivos. También se aplican con objetos. Y si, necesitarás la clase File para la lectura y escritura de ficheros. Un saludo!!
Hola!.Se pueden descargar las diapositivas desde la pagina web?
No. Las diapositivas es material que no comparto. Lo siento. Un saludo!
Una duda. Por qué en el fichero el primer carácter no lo coge al darle la consola y de ahí que que tengas que hacer un espacio para que si te salga el siguiente? No sé si me explico
Tienes que cambiar el orden en el que se lee el archivo en el while. En el vídeo hay un pequeño error de logica donde primero se lee la información sin haber impreso la información ya leída, por eso el hecho de que tengas que poner un espacio al principio del archivo.
Solo tienes que sustituir en el bucle while:
while (c != -1) {
c = entrada.read();
char letra = (char) c;
System.out.print(letra);
}
Por esto:
while (c != -1) {
char letra = (char) c;
System.out.print(letra);
c = entrada.read();
}
Es cuestión de ver el orden en el que se ejecuta cada instrucción e incluso evitas el problema en el que al final siempre vas a tener un carácter desconocido "?" ya que en programación es el carácter especial que especifica el final de un archivo denominado "EOF" (End of File).
Como puedo hacer para leer por partes el archivo?
Hooolaaa!
Una pregunta, hay forma de leer un conjunto de caracteres sin ir uno por uno como lo hace el read();
Saludos y muchas gracias.
HALA MADRID
Tengo una pregunta si hay varias líneas por cada final de linea seria un -1?
El -1 corresponde al final de caracteres de todo el archivo, esto incluye espacios en blanco si hubieran al final.
Ya me va quedando menos para cogeros. Lo primero disculpa por no ir poniendo todos los likes, se me olvida estoy tan concentrado que quiera mas capítulos. Y quería hacerte una pregunta en mac a la hora de seleccionar los ficheros como introduzco las rutas. Un saludo. Gracias
Perdona. Ya lo encontré.
Miil gracias
Hola profesor. Ante todo felicitarle y darle las gracias por estos cursos. Nunca antes he realizado una consulta, pues de una manera u otra he ido resolviendo los problemas que han ido surgiendo, pero ahora no doy con el error. He repasado el código una y otra vez y no veo dónde estoy fallando. ¿En qué consiste el error? Pues en que en la consola no me apacere el primer carácter, es decir sale "stamos estudiando streams de java" ¿Alguna idea? Gracias de nuevo y unn cordial saludo.
Joan Josep Ciria Bueno, ya he visto que lo explica en el próximo vídeo. Gracias de todos modos.
+Joan Josep Ciria Yo tambien tengo ese error, lo que no me di cuenta es que .read devuelve el primer carácter leido. Osea, cada vez que usas .read va devolviendo el próximo carácter. Al usarlo fuera y luego dentro del while, la primer letra no se guarda.
+Matias Daneri Por aclarar: basta con sustituir "int c=entrada.read();" por "int c=0;"
+Deyrsent o meterlo en un do while y no en un while
Buenas a todos! y muchas gracias Juan!!
Me pasa algo raro, en la consola no me imprime el primer caracter y además, al ultimo lo reemplaza por un signo de pregunta (?). Me imprime: stamos estudiando Streams Java? en lugar de Estamos estudiando Streams Java.
Les dejo el código por si alguno ve el error. Saludos!!
package leyendo;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Acceso_Fichero {
public static void main(String[] args) {
// TODO Auto-generated method stub
Leer_Fichero accediendo = new Leer_Fichero();
accediendo.lee();
}
}
class Leer_Fichero{
public void lee() {
try {
FileReader entrada = new FileReader("C:/Users/DaniO/Documents/Dani/Programación/AccesoFicheros/Ejemplo_I.txt");
int c = entrada.read();
while (c != -1) {
c = entrada.read();
char letra = (char)c;
System.out.print(letra);
}
} catch (IOException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
System.out.println("No se ha encontrado el archivo");
}
}
}
quisiera saber como leer un archivo JSON o XML
Thanks!
Hola, antes que nada muy agradecido por este excelente curso. Me surge el siguiente problema: Los archivos con extensión .txt los reconoce bien y los puedo leer, pero no así con los archivos word .docx. Alguna solucion? Estoy utilizando el mismo ejemplo del video. Igualmente supongo que debo seguir avanzando en el curso para descubrirlo jeje Muchas gracias!
Para ficheros que no son de texto plano (txt) sino que llevan formatos, estilos y más cosas (docx), no es tan sencillo. Mira este enlace a ver si te puede servir de ayuda: zzantares.blogspot.com/2012/01/leer-un-archivo-word-con-java.html
Un saludo!
@@pildorasinformaticas Muchas gracias por la respuesta! me fue de gran utilidad. De momento voy a seguir avanzando en el curso por lo menos hasta tratar el acceso a bbdd y manejo de librerías, lo cual tendria mas sentido antes de poner en práctica ese ejemplo. Saludos!
Por que si utilizo un documento de word me salen simbolos raros y no el texto?
perdon si es una pregunta tonta. pero como java entiende cuando hay un salto de linea para pintar la siguiente si esta en una sola dimension el array de enteros. y no veo ningun caracter especial, gracias.
No hay ningún array. Devuelve un valor int.
no encuentra mi archivo, ya estoy arto del java.io.FileNotFoundException
muy buen curso Juan pero tengo una pregunta, tu usas FileReader pero no Reader ni inputStreamReader ¿como saber que clase usar, o es que se usa el ultimo de la herencia que es el que hereda de los demas? quisiera saber eso.
Gracias
En general, si utilizas la última clase dela herencia te irá bien (aunque no siempre). ¿Cómo saberlo? leyendo la API para saber qué hace cada clase o consultando a Google si no tienes la suerte de que un profesor te lo diga en un curso. No hay otra alternativa. Un saludo!
Hola, estoy tomando el curso en tu pagina web... pero no vi como comincarme contigo, entonces entre por youtube... tengo un problema..
public void lee(){
try {
1 FileReader entrada = new FileReader("C:\Users\Peter Fraga\\Desktop\archivo.txt");
2 int c = entrada.read();
3 while (c!=-1){
4
5 c =entrada.read();
6 char letra = (char)c;
7 System.out.print(letra);
}
} catch (IOException e) {
e.printStackTrace();
String s = e.getMessage();
System.out.println("No se ha encontrado el archivo" +s);
}
}
el output es : stamos estudiando streams de java
hago el debug y veo la "e", pero no la imprime el caracter "e" lo veo al entrara en linea 5, pero al ejecutar la linea 5, al ir la linea 6 cambia a "s"
y eso graba... anteriormente cuando era el byte si imprima el 101 que es el valor de la "e"
una pregunta yo lo intento hacer en mac pero me da varios errores y no encuentro la solución.
Hola en el String donde especificas la ruta del File usá la constante de clase File.separetor . Por ejemplo yo tengo los archivos de texto almacenados en la raíz del proyecto en una carpeta llamada misArchivosDeTexto, entonces el String del path lo escribo así: FileReader entrada = new FileReader(new File("misArchivosDeTexto"+File.separetor+"archivo.txt") Espero haberte ayudado. Saludos.
Alguien me podría decir cómo funciona read()
Osea, quiere decir que si lo llamo una vez regresa un carácter, para la segunda vez el siguiente y así
Sin necesidad de decirle que carácter quiero que me devuelva?
por alguna razón está ocurriendo el error FileNotFoundException. al principio pensaba que era porque mi nobre de usuario tiene un acento y tal vez por eso ocurriera el error, pero trate poniendo el archivo de pruebas en un directorio mas directo y tampoco funciona =/
+Miguel S Sin poder verlo es difícil que te pueda ayudar con esto. Lo único que se me ocurre decirte es que revises bien el nombre y la extensión del archivo. Un saludo
Sí, tranquilo, gracias por estar pendiente. Por alguna razón no podía hacer referencia a archivos en el disco C, pero haciendo referencia a un archivo en otro disco si ha funcionado
Alguien me ayuda?!
porque cuando compilo y ejecuto el programa desde una consola me salta un error diciendo "no se ha encontrado o cargado la clase principal"
Aparentemente, has olvidado colocar el método main
@@innovationc56 si que estaba el metodo main
lo puse igual y me da un error no se porque
Antes de que me salte automáticamente al siguiente video, while(1) {gracias}
Tengo una duda, yo lo que hice fue crear otro paquete dentro del mismo proyecto llamado Recursos y llame a mi texto Fichero, entonces en la dirección puse "Recursos/Fichero.txt" pero me salia que el archivo no se habia encontrado. Alguien sabe como solucionar eso? Cual es la direccion que debo colocar
PD: Ya probe copiendo y pegando la direccion entera del archivo pero ni asi funciona.
Yo he conseguido quitar el error, creando un archivo de texto sin más con el bock de notas y lo guardé desde el propio programa. Volví a escribir la ruta, eso sí con doble barra. (Te transcribo y trocito de mi ruta \\PildorasInformaticas\\ejemplo.txt) y desapareció el problema.
@@gsantistebanes El "PildorasInformaticas" es tu paquete verdad?
@@paollarce5137 No es la carpeta en el ordenador donde he guardado el archivo txt
Lo que me pasó a mi fue que agregué .txt al nombre del archivo, y eso hizo que en mi caso que uso NetBeans se duplicara leyendo archivo.txt.txt
Dejen el código por favor ._.
Lo bueno, si breve, dos veces bueno:
import java.io.FileReader;
import java.io.IOException;
public class AccesoFichero {
static FileReader reader;
public static void main (String[] args) throws IOException {
reader = new FileReader("/home/db/Desktop/file.txt");
int i = 0;
while (reader.read() != -1) {
System.out.print((char) i);
}
reader.close();
}
}
porque no pones c++, el stream se aumenta solo :V Minuto 20:50... Gracias
Por esto: www.tiobe.com/tiobe-index/
Un saludo!!
Entendido. Java es la leche xD
Para algunas cosas, Saludos!
FLACO NO LO PODIAS HACER UN POCO MAS CORTITO AL VIDEO. Saludos cordiales.