Hola a todos.
En esta secuencia veremos La API para manipular archivos.
Lo que miraremos particularmente
es cómo navegar entre archivos,
cómo crear y eliminar archivos,
cómo enumerar archivos en los directorios,
y como leer de y escribir en archivos.
Para empezar,
necesitamos un punto de entrada en el sistema de archivos,
Hay muchos.
Con "FileLocator home" tienes el directorio de usuario,
"Raíz FileLocator" tienes la raíz
del sistema de directorio.
Con "FileLocatorC" en Windows tienes el disco C:
Una vez que tenga un directorio,
estos 3 elementos son directorios,
Tomo uno, "FileLocator home"
en el que tengo el directorio de inicio de usuario.
Desde allí puedo decir,
"Dame tu ruta de acceso".
Entonces "casa" no es una cadena, es un objeto que representa
un directorio y puedo decir,
"Dame la cuerda ubicarlo en el sistema ".
Entonces eso es "home / cassou".
Puedo pedir un directorio donde están sus hijos
"¿Qué son todos los archivos? y directorios que contiene? "
Aquí me dice, en "casa".
Tengo un archivo llamado .bashrc,
y tengo un directorio de música.
Entonces esto, "hijos"
devuelve un paquete de objetos,
que son archivos y directorios.
Si jugamos un poco más con esta API,
veremos el método "/",
Cuando enviamos el mensaje /
a un directorio podemos indicar un niño en particular que nos interesa.
Entonces "home / 'Music'" Me da el directorio de música.
Enviando el mensaje "directorios" en un archivo,
Obtengo todos los subarchivos.
Aquí veo eso, en mi biblioteca de música,
Tengo un archivo Anouar_Brahem.
El mensaje principal me permite para subir un peldaño,
así que si estoy en el archivo de música,
Envío "padre" pero regreso a mi archivo "hogar"
Dejando mi directorio
"Música", como vimos antes, Intentaré crear un directorio.
Para hacer esto, verifico si el directorio existe
Al enviar un mensaje "isDirectory"
Veo si existe o no.
Esto dice que no existe.
De acuerdo, lo creo con "ensureCreateDirectory".
Luego lo pruebo, "¿existes?" En este caso existe,
con "borrar" puedo borrarlo, y verifico que se borre
enviando "" isDirectory ".
Encontrar
todos los niños en un directorio,
hay varios métodos Te mostraré dos.
Enviamos un mensaje, "allChildrenMatching" a un directorio,
y al pasarle una expresión
eso es típico de la escalera y que representa
el nombre del directorio que esperamos, así que con "* .org"
Quiero que todos los archivos tengan la extensión ".ogg".
Eso devolverá todos mis archivos de música. a .ogg en mi directorio de Pink Floyd.
Puedo hacer lo mismo de una manera más lenta.
Enviando el mensaje "allChildren" recibo a todos los niños
todos los archivos y directorios, en un directorio particular,
y filtro con el mensaje "seleccionar"
todos aquellos cuyo nombre termina en ".ogg".
"Nombre de base" devuelve la cadena que representa el nombre del archivo
y quiero el nombre del archivo terminar en .ogg
Estos dos bits de código son casi lo mismo
¿Cómo obtenemos información sobre un archivo?
¿Cómo creamos un archivo de una cadena?
Tengo un nombre de archivo, "asFileReference",
que convierte mi nombre de archivo En una referencia hacia un archivo.
Puede ser un o un archivo inexistente, no lo sé.
Echemos un vistazo al mensaje "isFile" en esta referencia.
Obtendré "verdadero" si existe y "falso" si no es así.
Al enviar el mensaje "nombre base", Obtengo el nombre del archivo.
Al enviar "extensión" Obtengo la extensión del archivo,
con "tamaño" obtengo el tamaño,
y con "PathString", como vimos antes,
Obtengo la ruta de acceso en la forma de una cuerda.
Ahora veamos cómo escribir para y leer de un archivo. Escribir,
antes que nada, tomo una referencia hacia un archivo
Aquí, verifico que no exista.
Podemos escribir en un archivo que existe, Estoy comprobando que no existe.
Le escribo Para escribir, creo una secuencia.
Con "nextPutAll"
Pido escribir cada personaje de la secuencia en el archivo.
Al final cierro mi transmisión para asegurar que el sistema
ha escrito todo en el disco.
Por el contrario, puedo leer
desde un archivo, así que tomo el mismo archivo y .txt.
Comprobo que existe, y lo hace, porque puedo escribirle.
Yo creo un "ReadStream"
y yo miro, cualquiera de los personajes por personaje enviando "próximo".
Con el mensaje "próximo" obtendré, "h" luego "e" luego "l", etc ...
Hago "next" una vez, obtengo "h".
Luego recogeré todo,
desde la primera "h" que acabo de leer al final del archivo.
Aquí obtengo "ello World" sin la "h"
Al final, envío "stream close" al objeto de secuencia,
para garantizar que la referencia del archivo esté cerrada.
Podemos escribir estos códigos de manera más simple,
sin tener la necesidad
para enviar el mensaje "cerrar".
Podríamos olvidar enviar el mensaje "cerrado"
Puede haber una excepción eso significa que "cerrar" nunca se envía.
En general, intentamos evitar tener que escribirlo nosotros mismos
Para hacer esto, para escribir,
Tomo mi referencia de archivo,
Envío el mensaje "writeStreamDo",
que toma un bloque entre paréntesis,
el bloque toma una secuencia entre paréntesis.
Esta transmisión será automática. proporcionado por "writeStreamDo"
que creará un "writeStream" en el archivo.
Lo único que tengo que hacer es, Al usar esta transmisión,
manipular la corriente Para hacer lo que quiero con el archivo.
Escribiré "Hello World" en el archivo, "transmitir nextPutAll:Hello World".
Cuando el bloque termina,
el flujo se cierra automáticamente, y el archivo se escribe en el disco.
El mismo principio para la lectura, Puse "readStreamDo".
Aquí tengo una transmisión, Puedo hacer lo que quiera con eso.
Decido recuperar el contenido de la secuencia
Lo que deberías saber,
es que los archivos y directorios son referencias,
son referencias hacia archivos y directorios en el disco
que puede o no existir. Compruebe con "isFile", "isDirectory"
si los archivos existen en el disco.
La API es simple,
y facilita la navegación y manipulación de los archivos.
Podemos leer y escribir en archivos a través de corrientes,
y con una API
que cerrará la corriente automáticamente al final.