Hola y bienvenido de nuevo.
Estamos en una nueva sección.
Esta sección trata sobre la entrada y salida de archivos, escribiendo y leyendo de ellos.
Vamos a concentrarnos en los archivos de texto, pero también hablaremos un poco de los archivos binarios.
En esta conferencia, sólo quiero proporcionar una visión general, decirle lo que es un archivo, y decirle cómo es un buen
uso para el almacenamiento de datos persistentes.
Así que hasta este punto, todos los datos a los que accede nuestro programa son a través de la memoria.
Estamos familiarizados con este concepto de variables, estructuras, lo que sea.
Borrar todos los datos que su programa utiliza está en la memoria.
Y la razón por la que se almacena en la memoria es porque las memorias son realmente rápidas y se puede acceder a ellas
rápidamente para realizar cálculos.
Estás haciendo el ciclo de obtención y ejecución, todo eso.
Así que el alcance, pero también es limitado porque el alcance y la variedad de nuestras aplicaciones,
si sólo utiliza la memoria, va a ser algo limitado.
Sabemos que la memoria desaparece cuando el programa se va, y eso puede ser muy limitante.
Todas las aplicaciones empresariales serias requieren más datos de los que caben en la memoria principal.
La memoria principal también es muy pequeña, justo arriba.
Y hoy en día puedes conseguir mucha memoria, de 1630 a 32 gigabytes.
Pero en el pasado, y especialmente en los dispositivos integrados, no se dispone de tanta memoria RAM y, en consecuencia, las aplicaciones
están muy limitadas por el espacio y el tamaño.
En realidad sólo quieres almacenar variables y cosas así en la memoria principal.
También porque la memoria principal desaparece cuando el programa se va.
No puedes tener ningún dato que se almacene de forma persistente a través de los reinicios.
Así que todo depende de la capacidad de procesar los datos que son persistentes y se almacenan en un dispositivo externo como
una unidad de disco duro estos grandes programas.
Así que quieres tener esta capacidad de almacenar en el disco duro.
Es un poco más lento, pero puedes almacenar muchos datos en él y los programas grandes necesitan almacenar
muchos datos.
C proporciona muchas funciones en el archivo de cabecera estándar para escribir y leer de dispositivos externos.
No tienes que escribir tu propio código para leer y escribir los archivos, pero puedes ver la ventaja
que ofrecen las aplicaciones que tienen la capacidad de almacenar datos durante más tiempo.
Muchas ventajas.
El dispositivo externo que se utiliza para almacenar y recuperar datos suele ser el disco duro la unidad
de disco.
Sin embargo, las funciones del archivo de cabecera de las que vamos a hablar se pueden utilizar en cualquier dispositivo de almacenamiento externo.
Así que podrías usarlo en una unidad USB, podrías usarlo en cualquier dispositivo externo que almacene datos y unidad SSD cualquier
cosa con todos los ejemplos.
Hasta ahora, cualquier dato que el usuario introduzca se pierde.
Una vez que el programa termina, se denomina memoria volátil.
Cada vez que se oye el término memoria voluntaria, significa que la memoria no es persistente o que los datos no son
persistentes.
Desaparece cuando el programa termina o si la máquina se reinicia.
Así que si el usuario quiere ejecutar el programa con los mismos datos, tiene que introducirlos de nuevo cada vez para
que se restablezcan.
Es muy incómodo.
Limita la programación.
Y de nuevo, esta es una memoria volátil.
Cuando guardas cosas en archivos y las almacenas en el disco duro, se trata de un almacenamiento permanente.
Todavía está ahí.
Incluso cuando has reiniciado la máquina o cuando tu programa no se está ejecutando.
Se denomina memoria no volátil porque permanece en torno a un archivo, puede almacenar datos no volátiles y suele almacenarse
en el disco o, actualmente, en una unidad de estado sólido y SSD.
Es una sección de almacenamiento con nombre y el semental estándar IO es un archivo que contiene el uso de información
para poder leer y escribir en esos archivos.
Pero vamos a utilizar este concepto de escritura y lectura de datos de un archivo para el almacenamiento
permanente, y vas a notar cómo tus aplicaciones se vuelven mucho más útiles, mucho más robustas, mucho más escalables, porque
ahora tenemos la capacidad de almacenar grandes cantidades de datos y además no tenemos que preocuparnos de que los datos desaparezcan
cada vez que el programa termina o el ordenador se reinicia.
Así que va a ser muy, muy ventajoso usar archivos.
Un archivo dentro del sistema operativo Linux o del sistema operativo Windows se almacena de una manera determinada.
Pero en cuanto a C, el lenguaje de programación, es sólo una secuencia de bytes en cada byte puede ser leído
individualmente.
Esto corresponde a la estructura de archivos en Unix, pero no necesariamente.
Sólo hace una diferencia cuando estás leyendo archivos de texto y ventanas, porque puedes tener
caracteres extra de los que tienes que preocuparte en cuanto al tamaño, pero es sólo una secuencia de bytes.
Así que si tienes un archivo de texto y tiene más bytes, todavía puedes leer esos bytes.
Sólo hay que entender qué representan esos bytes.
Así que este es el aspecto de un archivo y cómo vamos a leerlo y escribir en él utilizando el lenguaje de programación
C.
Es sólo una serie de bytes con diferentes desplazamientos.
El comienzo del archivo sería por cero, y luego siempre se pueden encontrar diferentes posiciones
en el archivo.
Podría ser cuatro, podría ser cuatro por diez dos, podría ser 100 bytes en él.
Y luego tienes el final del archivo y el final del archivo generalmente marcado con un marcador especial llamado
EOF y un archivo.
Así que un archivo tiene un principio y un final y una posición actual.
La posición actual se define tantos bytes al principio.
La posición actual es donde se realizará cualquier acción de archivo.
Vas a escribir o vas a leer en esa posición.
Y también vamos a hablar de algunas funciones en las que puedes desplazarte para mover la posición actual a cualquier lugar
que quieras en un archivo.
Incluso al final, si quieres leer al final o hasta el final.
Hay dos tipos de archivos.
Hay archivos de texto y archivos binarios.
Un archivo de texto son datos escritos como una secuencia de caracteres organizados en forma de líneas.
Cada línea termina con una nueva línea, y los datos del texto pueden variar de un sistema a otro dependiendo de cómo se interpreten
los caracteres.
Así, por ejemplo, en Windows en DOS, cada línea tiene un retorno de carro y un avance de línea, por lo que una barra invertida R y una
barra invertida N.
Y así, cuando lees los datos o escribes los datos, tienes que entender esto porque el formato es un poco
diferente.
Pero en Linux no tienes una barra invertida.
R Y así tienes que entender cómo se escriben los datos de texto, aunque estén organizados por líneas y sean una serie de
bytes, los datos binarios se escriben como una serie de bytes exactamente como aparecen en la memoria.
Así que los ejemplos de archivos que tienen datos binarios son los datos.
Nuestros archivos, como los datos de imagen o los archivos binarios de codificación de música, no son legibles.
Si trataras de traerlos en un editor de texto porque son sólo bytes, vamos a concentrarnos en los archivos de texto
en esta sección, pero puedes escribir cualquier dato que quieras en un archivo.
Puedes escribirlo como una serie de bytes y cómo aparecen en la memoria, o puedes escribirlo como texto.
Pero una vez que el archivo se ha escrito realmente, sólo va a consistir en una serie de bytes, incluso
si se representa como un texto.
Puede ver los archivos de texto en un editor, lo que los hace más legibles.
Usted tiene que entender que el formato del archivo con el fin de leerlo y esto es lo que he
mencionado con si se está ejecutando en DOS Windows o Linux, donde Windows puede tener caracteres adicionales cuando escribe los
datos.
Así, una secuencia de 12 bytes en un archivo binario podría ser 12 caracteres, podría ser 12 enteros de
ocho por ocho bits con signo o 12 enteros sin signo.
Los fuegos binarios son especialmente complicados porque sólo almacenan Watson como memoria aparente.
Así, en modo binario, todos y cada uno de los bits del archivo son accesibles.
Pero para poder leer algo de un archivo, hay que entender qué hay allí en cuanto a datos y cómo están almacenados.
Y puede depender del sistema en el que se esté ejecutando.
Y también va a depender de si es texto o binario.
Arroyos.
Los programas C se abren automáticamente en tres archivos en su nombre.
Un flujo puede representar un archivo, pero un flujo es un término más genérico que puede representar cualquier tipo de entrada.
Así que podría representar el teclado, podría representar la consola, podría representar un archivo, podría representar
un socket.
Si estás acostumbrado a trabajar en red los streams son un término más genérico, y hay tres streams que se abren automáticamente
para ti en el lenguaje de programación C.
Uno es la entrada estándar, y este es el dispositivo de entrada normal de su sistema.
Normalmente, por defecto, es el teclado.
Hemos estado utilizando la entrada estándar cuando hacemos el escaneo F, pero en realidad se podría utilizar el escaneo off para leer de
los archivos.
Si cambias el flujo de entrada, tal vez cambies el flujo de entrada a un archivo de salida estándar este suele aparecer
en la pantalla, normalmente a través de la consola.
El error estándar también está en la pantalla, pero normalmente hay que redirigirlo para
verlo usando como el ampersand tres o algo así.
Pero estas son las tres salidas que he mencionado.
La entrada estándar es el archivo que es leído por la guitarra y la exploración F La salida estándar es utilizada por la salida nosotros y la impresión
F hemos estado utilizando principalmente printf.
También puede redirigir archivos en el sistema para que sean reconocidos como la salida de entrada estándar.
Esto es una redirección.
Se trata de un concepto del sistema operativo en el que se pueden redirigir los datos, enviar la salida a un archivo, por ejemplo, o enviar
la entrada, obtener la entrada de un archivo en contraposición al estándar.
Aquí se pueden utilizar los símbolos menor que o mayor que.
El propósito de la salida de error estándar es proporcionar un lugar lógicamente distinto para enviar mensajes de error.
Así que está algo separado aunque se muestre en la pantalla.
Para acceder a eso, tienes que tener un comando especial.
El flujo es una representación abstracta de cualquier fuente o destino externo de datos.
Por eso es más genérico que, por ejemplo, un archivo.
El teclado.
La línea de comandos en sus archivos de visualización en un disco.
Todos estos son ejemplos de cómo se trabaja con los flujos.
Los flujos van a ser mucho más importantes cuando empieces a estudiar C++.
La biblioteca C proporciona funciones para leer y escribir en o desde flujos de datos, por lo que puede utilizar las mismas funciones
de entrada y salida para leer y escribir cualquier dispositivo externo que se asigne a un flujo.
Por eso mencioné que puedes usar el escáner F para leer desde el teclado.
También puede utilizar el escáner F para leer de los archivos.
Todo depende de lo que la entrada, donde la corriente está apuntando.
Así que las funciones son muy, muy útiles y muy, muy flexibles para hacer esto.
Y esto es sólo una visión general de alto nivel de lo que es un archivo y por qué lo usaríamos, cómo son los datos persistentes,
es la memoria no volátil.
Lo vamos a utilizar y vamos a usar el archivo de cabecera estándar IO para leer y escribir en él cuando
necesitemos almacenar datos para nuestro programa y nuestros programas terminarán siendo mucho más robustos,
mucho más utilizables, mucho más flexibles.
Así que en nuestra próxima conferencia, hablaremos de la implementación real de esto usando las funciones en la cabecera
estándar de IO.
Gracias.