Bueno y llegamos al capítulo del manejo de archivos y tratamiento de archivos en lenguaje Gou.
Yo he tenido que crear la carpeta porque he tenido que grabar un archivo que es el que vamos a usar
para leer un simple txt.
Le voy a hacer click fíjense que tiene dos líneas y he creado mi main punto doble puesto lo básico para
ir adelantando y no entretenerlos.
Y vamos a ver cómo se manejan archivos engo.
Vamos a usar tres paquetes nuevos tres paquetes nuevos unos gofio lo habíamos usado con el tema del
escáner para pedir por teclado.
Vamos a agregarlo.
El otro es o ese de sistema operativo Operating System y el otro es imputado output barra imputará output
y útil.
Estos son los tres paquetes que vamos a usar en los ejemplos para que ustedes vean dos formas de leer
y de grabar archivos de texto.
Muy bien lo que vamos a hacer es vamos a comenzar con un primer ejemplo vamos a llamar a una función
creada por nosotros que se va a llamar archivo y la vamos a crear aquí debajo.
Lo que vamos a hacer es Phong Leo archivo muy bien y ahora vamos a comenzar con el código.
Vamos a crear un un archivo es una variable que va a contener lo que leamos de este archivo llamado
archivo txt vamos a decirle que también la función que vamos a usar ahora y envía dos parámetros de
salida uno es el archivo que estamos leyendo y otro es una variable de error.
En caso de que haya ocurrido algún error cuál es esa función que vamos a usar es imputado output útil
punto y aquí vamos a usar el rid fiel muy bien obviamente lo que tenemos que pasarle por parámetro es
cuál es ese archivo que vamos a leer comillas punto barra por qué punto barra porque el archivo está
ubicado en la carpeta en la que estoy trabajando sino aquí colocarán un Pat completo o relativo a la
carpeta en la que estoy trabajando de acuerdo a donde ustedes tengan ese archivo lo vamos a así archivo
txt y esto es lo que va a hacer es si la lectura es satisfactoria o sea que el archivo existe y no está
vacío va a grabar el contenido va a leer todo el archivo va a grabar el contenido en esta variable archivo
y si el archivo no existe o algún error me va a informar con un Tru en el parámetro error muy bien cómo
chequeó ahora es muy fácil si la variable error es distinto de nulo recuerden que tengo el Null en lugar
de ser MVLl es Nil.
Si el archivo es Neil
lo que vamos a hacer es un FME print LN hubo un error muy bien y por errores es decir si el archivo
se ha leído satisfactoriamente lo que vamos a hacer es un Mette print LN de archivo.
En realidad el archivo no es una variable de texto no es un string lo vamos a tener que convertir porque
no podemos usarlo directamente en un print LN.
Vamos a tener que convertir el contenido de archivo en una string.
Ustedes saben que los tipos de datos en Goh no solo sirven para indicarnos que la variable o el objeto
que estamos creando es de tal tipo de dato sino que también se usan como funciones de conversión.
Entonces vamos a usar el string como una función de conversión.
A qué me refiero.
Ustedes pueden poner Baur mi texto de tipo string y ahí es un tipo de dato pero también pueden usar
a string como función fíjense que el Visual Studio Count los cambia de color para diferenciar un uso
del otro muy bien.
Ahora nosotros ya tenemos nuestro archivo vamos nuestro Leo archivo que es el primer ejemplo que vamos
a ver ahora lo vamos a grabar vamos a ir a nuestra terminal le decimos que ahora estamos en Geron se
hacemos hundir por las dudas ahí tenemos tanto nuestro archivo como nuestro mail apuntó.
Vamos a hacer un borrado vamos a hacer un gorrón de Main punto que es lo que nos tiene que mostrar si
el archivo existe y no hay problema nos tienen que mostrar el contenido del archivo por pantalla y aquí
lo tenemos sólo alumnos Bienvenidos al curso de gov desde cero el mismo GoW se encarga de hacer la lectura
apertura del archivo la lectura y el cerrado del archivo.
Aquí no hay que hacer un Open aquí no hay que hacer un Clowes directamente esta instrucción se encarga
de abrir el archivo leer su contenido y cerrar el buffer del archivo.
Muy bien vamos a ver un segundo ejemplo vamos a dejar esto aquí donde lo tenemos.
Vamos a poner un Leo archivados
muy bien después de los temas que hemos tenido que ver y explicar esto es muy fácil así que nos diste
andemos un rato con un tema fácil.
Luego de ocupar 40 minutos o menos un poquito menos para explicar lo que es para explicar lo que son
las interfaces.
Bueno muy bien Leo archivo 2 lo mismo lo mismo pero ahora lo que vamos a usar lo que vamos a usar ahora
es el paquete o ese es otra variante lo que estamos viendo ahora vamos a hacer un Open aquí no va a
leer nada simplemente lo que va a hacer es vas a poner bien aquí que quedó mal.
Lo que va a hacer es abrir el archivo y lo va a tener listo para lectura
porque esto es muy fácil es muy útil pero tiene una limitación o sea me graba me lee todo el archivo
de un solo intento pero no me lo deja manipular mucho.
En cambio usando este paquete el paquete del sistema operativo voy a abrir el archivo y ahora primero
vamos a copiar esto porque va a ser lo mismo si hubo un error vamos a pegarlo aquí muy bien ahora por
él es lo que voy a hacer es crear un escáner.
Vamos a quitar esto y vamos a usar nuestra conocida función gofio nuestro paquete bufido no es una función.
Nuestro paquete gofio que tiene muchas funciones vamos a usar la primera.
Vamos a decir que escáneres sonido escáner de archivo que es lo que hace esto.
Nosotros vimos que escáner nos permite capturar por teclado.
Bueno también tiene funciones para la lectura de archivo.
Entonces si yo le estoy diciendo que este objeto escáner va a ser el equivalente a crear un nuevo escáner
de archivo que es lo que acabo de abrir aquí ahora voy a poder recorrer secuencialmente registro por
registro de mi archivo txt cómo se hace bueno escáner.
Esto significa
esto significa que voy a escanear cada una de las líneas.
Cuando colocamos esto lo que hace el foro es primero lee una línea.
Si la línea es válida ejecuta lo que tengo dentro del bucle y iba a leer hasta que esta instrucción
sea Fool's porque porque va a leer una próxima línea y se encontró con él en.
Entonces aquí lo que vamos a hacer es registro.
Vamos a crear una variable porque tenemos que convertir
scaner .3.
Esto es lo que va a hacer es leer la línea y va a convertir la línea que acaba de leer aquí arriba aquí
arriba hace la lectura.
Ojo esta línea no es que la está leyendo del archivo ya lo leyó.
Leyó la línea la tiene guardada en el buffer de escáner y lo que hace esta función es convertirme esa
línea que tiene en un buffer en memoria la convierte en una cadena de texto.
Esa cadena texto graba el registro y ahora lo que vamos a hacer
vamos a hacer un printed F para que vean que ahora tengo la libertad de formatearlo y vamos a colocarle
aquí un registro y vamos a colocar un barril.
Esta es otra variante yo aquí podría haber puesto por ciento ese y con una coma como parámetro el registro
pero quiero que vean que se puede hacer de esta manera también muy bien.
Vamos a esto creo que está todo cerrado todo bien intentado vamos a grabarlo
vamos a ejecutar nuevamente y ahora vamos a tener dos variantes la primera que me muestra lo de siempre
las primeras dos líneas es el Leo archivo uno donde vemos el formato anterior y ahora vemos cómo cada
línea yo la puedo formatear gracias a usar el escáner.
Esto me da mucha más libertad puedo ir leyendo líneas y cuando llego a una línea que cumple con una
condición le puedo dar un tratamiento y a otra línea no.
Por ejemplo en una opción para buscar un string dentro de un archivo muy bien hemos visto dos variantes
de cómo leer archivos y lo que vamos a ver ahora es dos variantes para grabar datos en archivos.
Venimos aquí vamos a colocar
nuestro grabo archivo que sería el equivalente.
Aquí me ha faltado algo aquí Cuidado cuidado que nos ha faltado algo muy importante que es archivo punto
Clowes.
Si yo no hago esto el archivo queda abierto.
Recuerden que aquí si tengo que abrirlo primero al abrirlo es como que se da el Wafer de esta variable.
Esto es el equivalente a cuando en otros lenguajes habriamos un buffer y le dábamos un nombre al buffer
el famoso numeral 1 numeral 2.
Bueno aquí el buffer tiene nombre de archivo lo que hago aquí es leer es crear un escáner en base a
ese Wafer y aquí hago lo que hago es recorreré se va Afer leyendo el registro por registro y convirtiendo
en texto cada una de esas líneas de texto muy bien vamos a gravó archivo y lo que vamos a hacer aquí
es lo mismo.
Nuestros dos parámetros que devuelve la función nuestros dos varon valores vamos a usar.
El paquete de sistema operativo y lo que vamos a usar es la primer función que es height.
La función crea y se usa para crear archivos de vamos a decir que esto se va a llamar nuevo archivo
txt y lo que vamos a hacer ahora es por ejemplo vamos a copiar esto el tratamiento de error lo vamos
a copiar y pegar porque es siempre el mismo.
Si hubo un error porque hay algún problema el disco se quedó sin espacio lo que haya sucedido me va
a parecer el error muy bien y lo que vamos a hacer ahora esto lo vamos a cerrar.
Directamente aquí vamos a poner un Rostam para que veamos otras variantes para que no coloquemos siempre
el mismo código al hacer un retorno y ya no ejecuta más las líneas que están por debajo y lo que vamos
a hacer ahora es un FME un F.
Fíjense que estamos aprendiendo cosas nuevas.
Fíjense que ahora nuestro FM estamos viendo una función nueva que es el mismo print LN.
Con la diferencia de que ahora se graba en un archivo se graba en archivo comienza con una F.
Entonces cuáles son los parámetros de f LN.
Primero el Wafer Laffer llamado Archivo y ahora vamos a colocar un texto que diga que esta es una línea
nueva o cualquier cosa que ustedes quieran grabar muy bien y ahora nuestro archivo punto Claws muy bien.
él quería que ahí al igual que el Open necesita de un Kloss criaste es lo mismo que un Open solamente
que me lo abre de Apud el archivo me lo borra si yo ya tenía un archivo hay que tener cuidado.
Si yo ya tenía un archivo con ese nombre me lo va a borrar y lo que hace luego es regrabar todo lo que
tiene en las líneas de código inferior en ese archivo y posterior a eso un Clowes muy bien.
Vamos a ver el segundo ejemplo de grabación y el último de este capítulo
que es grabo archivo dos por supuesto tratamiento archivo.
Después ustedes tienen muchas funciones en estos sistemas operativos por estos dos paquetes de sistema
operativo y en los paquetes de imputado put@ con solo colocar puntos les van a aparecer las funciones
y pueden jugar con esto para saber si un archivo existe o no. Son todas cosas con las que van a poder
jugar.
Vamos a poner grabo pero esto es lo más importante el poder leer y grabar información en archivos.
Vamos a colocar nuevamente en este caso vamos a usar una forma diferente vamos a usar una variable Phinney
y le vamos a colocar aquí por ejemplo un nuevo archivo.
Yo quise hacer que cada ejemplo tenga algo diferente para que de paso vamos viendo distintas maneras
de hacer lo mismo y aquí colocamos GIF y aquí tenemos una pega en la PEN es el que me va a incorporar
nuevas líneas.
Cuál es la diferencia de grabo archivo haberá o archivados.
Grabo archivo de acuerdo al código que hemos puesto me va a crear un archivo nuevo me lo va a borrar
el contenido y voy a poder grabar contenido nuevo en el ejemplo que vamos a ver ahora vamos a saber
cómo adicionar texto a un archivo que ya existe.
Fíjense que estamos usando el mismo nombre de archivo y ahora voy a hacer una pend.
El APEN me va a agregar al final de todo el archivo una nueva línea.
Entonces vamos a colocar.
Si Append y lo que vamos a poner es Filey muy bien y lo que vamos a hacer ahora es poner el contenido
aquí vamos a tener que usar los caracteres los mismos caracteres que usamos en el DF si queremos un
salto de línea vamos a tener que incorporarlo en el texto.
Entonces colocamos esto y colocamos.
Esta es una segunda línea vamos.
Antes de grabar y ejecutar esto perdón yo me olvidé de ejecutar el primero.
No hay problema se van a ejecutar los dos al mismo tiempo va a ejecutar primero esto me va a crear el
archivo va a grabar esta línea y luego van a ver ustedes que se ejecuta la segunda línea.
Ahora lo que tengo que preguntar es si fue satisfactorio esto el Appen no es como el resto de las funciones
que me devuelve los parámetros lo que me devuelve aquí es si fue satisfactorio o no si fue Tru o fours.
Entonces si el Append es igual a fouls yo voy a mostrar un error
que va a decir
error en la segunda línea muy bien ahora qué vamos a hacer ahora.
Esta función Append que yo creé Ono no es propia de Diego la voy a escribir aquí abajo vamos a colocar
Appen que es la función que acabo de definir va a recibir un archivo que es de tipo string con el nombre
del archivo va a recibir un texto que es de tipo string y esto va a devolver un boliviano se entiende
yo aquí tengo una función que estoy definiendo debajo no es una función.
Si bien existe la pend en algunas algunos paquetes de GOW esta es una función que estoy creando yo.
Es una función de usuario que le voy a pasar el nombre del archivo que es un string y le estoy pasando
el texto.
Entonces esa función me va a devolver un boliviano.
Esto es lo que estamos definiendo aquí muy bien ahora.
Ahora sí ahora vamos a usar funciones del sistema operativo que me devuelven dos parámetros igual que
como lo hemos visto antes y vamos a poner open file.
Esto ya lo vimos open file.
En realidad nosotros aquí lo que vimos fue Open.
Vamos a ver ahora open file porque tiene otro otras características.
Lo que quiero ver es cómo enseñarles cosas diferentes para hacer lo mismo.
Ahora este Open Feil es una función de hoy del sistema operativo que tiene algunos parámetros.
Vamos a ver esos parámetros.
Primero vamos a decirle cuál es el archivo en realidad aquí voy a colocar la variable archivo aquí voy
a colocar unos unos unas constantes que tiene el paquete o ese por ejemplo que el archivo va a ser de
raid only Rigdon y no para para poder grabar y escribir.
Por ejemplo va a ser Onion bajos son unas constantes.
Vamos a decirle en esta última que puede ser de escritura y de lectura ya le estamos metiendo permisos
al archivo.
Vamos a poner un PIP porque puedo meter e introducir en el CT o más de un parámetro.
Vamos a decirle que por ejemplo además de ser de escritura y de lectura que lo vamos a abrir de modo
Append este modo APEN es el modo a que no me limpia el archivo no me lo blanquea sino que lo va a abrir
para poder escribir al final y agregarle registros y luego nuestros conocidos permisos de escritura
lectura para usuario para dueño.
Para el grupo todas estas cosas que maneja sobres que se manejan de manera visible sobre todo en Linux
y en Unix y también en Mac porque Mac viene de Linux en Windows está un poco solapado esto pero funciona
igual.
Vamos ahora a copiar nuestras líneas de error de tratamiento de error
porque qué hice en mi primer función aquí.
No no he trabajado con el entorno aquí no he trabajado con el disco ni el sistema operativo.
Esto fue simplemente crear una variable de tipo String.
Hacer un llamado a una función y mostrar algo por pantalla en caso de que la función devolviera un fouls.
Aquí sí estoy trabajando con el sistema operativo y por eso tengo que hacer un chequeo de errores.
Vamos a un error aquí no es un simple rotar porque tengo que devolver un Fors para qué para qué.
Al devolver un Fool's me ejecute esta línea.
Aquí hay un error aquí es print LNE.
Bueno qué es lo que vamos a hacer ahora.
Aquí se fue por si hubo error.
Vamos a ver qué pasa si no hubo error si no hubo error.
Lo que vamos a hacer es grabar un nuevo registro.
Qué es lo que vamos a grabar.
El texto este texto que hemos recibido de parametro muy bien.
Aquí lo que vamos a hacer es
vamos a usar
vamos a
vamos a usar la función Rights string que es para grabar un string dentro de archivo que es el archivo
que nosotros acabamos de abrir aquí.
Le estoy diciendo que en este Wafer vamos a usar la función de string va a grabar un texto ese texto
que es la variable el texto la va adicionar al final del archivo porque lo hemos abierto de modo Appen
muy bien.
Ahora como no nos interesa lo que nos devuelve en primer parámetro el string colocamos un guion bajo.
Yo no sé si se los comenté en capítulos anteriores supongo que sí que cuando usamos guión bajo es cuando
no nos interesa grabar ni alojar en una variable memoria el contenido que nos devuelve una función.
A veces las funciones nos devuelven o una variable o un tipo de dato o un objeto y también nos devuelven
un error y más de una vez nos va a pasar que no queremos recibir el error.
Entonces en lugar de ver colocamos un guion bajo muy bien ahora aquí volvemos a chequear porque pudo
haber habido algún error de imputado por grabar ese texto.
Entonces si el error es distinto de nulo o sea que hubo un error vamos a vamos a copiar esto mismo va
a devolver un Fours porque hubo un error y si no hubo ningún error es porque anduvo todo bien se anduvo
todo bien.
Vamos a ver que este texto está grabado en mi archivo.
Qué archivo el nuevo archivo txt vamos a grabar todo esto venimos aquí vamos a ejecutar
Mayberry bueno ahora tenemos nuestras primeras dos líneas que lo habíamos visto las segundas de líneas
tienen que ver con la lectura y aquí se nos ha creado aquí a la izquierda un archivo de texto que es
el que hemos creado aquí.
Nuevo archivo.
Si yo le hago clic me lo abre y nos permite ver que primero grabó una línea con la primer rutina que
era grabo archivo y grabo archivo 2.
Me agregó esta segunda línea lo que ha hecho es ejecutar estas tres funciones primero ésta y luego estas
dos que están unidas.
Bueno muy bien espero que esto haya quedado claro hemos visto tratamiento de archivo engo y nos vamos
a ir al próximo capítulo a seguir aprendiendo este maravilloso lenguaje.