módulo fs
El módulo fs es un módulo de operación del sistema de archivos. Proporciona operaciones de E/S de disco, como leer archivos, escribir archivos, abrir archivos, cerrar archivos, cambiar permisos de archivos, etc., y admite el uso sincrónico y asincrónico. El módulo fs también proporciona una función de monitoreo de archivos, que puede monitorear cambios en archivos y directorios en el sistema de archivos y volver a llamar a la función especificada.
Por ejemplo, para leer un archivo en fibjs, puedes usar el método readFile del módulo fs:
1
2var fs = require('fs');
var content = fs.readFile('/path/to/file');
Si desea leer el archivo de forma asincrónica, puede hacerlo mediante una devolución de llamada:
1
2
3
4
5var fs = require('fs');
fs.readFile('/path/to/file', function(err, data) {
if (err) throw err;
console.log(data);
});
De manera similar, si desea escribir en un archivo, puede usar el método writeFile del módulo fs:
1
2
3var fs = require('fs');
var content = 'hello, world!';
fs.writeFile('/path/to/file', content);
Si desea escribir un archivo de forma asincrónica, puede hacerlo mediante una devolución de llamada:
1
2
3
4
5
6var fs = require('fs');
var content = 'hello, world!';
fs.writeFile('/path/to/file', content, function(err) {
if (err) throw err;
console.log('File saved.');
});
Además de leer y escribir archivos, el módulo fs también proporciona una serie de otras operaciones del sistema de archivos, como crear directorios, modificar permisos de archivos, consultar el estado de los archivos, etc.
Algunos puntos a tener en cuenta:
- La ejecución
fs.watch(filename)
devolverá un valor heredado deEventEmitterobservador, que admite tres eventos: 'cambiar', 'cambiar solo', 'renombrar solo' fs.watchFile(target)
yfs.unwatchFile(target)
todavía se puede utilizar en paresfs.watchFile(target)
devolverá un valor heredado deEventEmitterdeStatsWatcherObjeto, llamarfs.unwatchFile(target)
es equivalente a llamarStatsWatcher.close()
.- Debido a que uv está implementado en Linux,
fs.watch
larecursive
opción solo se admite de manera estable en win32/darwin. Aún puedes intentar usarla en Linuxfs.watch('/[path](path.md)/to', { recursive: true }, handler)
, pero es posible quehandler
el momento en que te devuelvan la llamada sea diferente de lo que esperabas.
objeto
constants
Objetos constantes del módulo fs.
1fs_constants fs.constants;
función estática
exists
Consultar si el archivo o directorio especificado existe
1static Boolean fs.exists(String path) async;
Parámetros de llamada:
- path: Cadena, especifique la ruta a consultar
Resultados de devolución:
- Boolean, devuelve True para indicar que el archivo o directorio existe
access
Consultar los permisos del usuario en el archivo especificado.
1
2static fs.access(String path,
Integer mode = 0) async;
Parámetros de llamada:
- path: Cadena, especifique la ruta a consultar
- mode: Entero, especifica el permiso de consulta, el valor predeterminado es si el archivo existe
link
Cree un archivo de enlace físico; este método no es compatible con Windows
1
2static fs.link(String oldPath,
String newPath) async;
Parámetros de llamada:
- oldPath: Cadena, archivo fuente
- newPath: Cadena, el archivo a crear
unlink
Eliminar el archivo especificado
1static fs.unlink(String path) async;
Parámetros de llamada:
- path: Cadena, especifica la ruta a eliminar
mkdir
Crear un directorio
1
2static fs.mkdir(String path,
Integer mode = 0777) async;
Parámetros de llamada:
- path: Cadena, especifique el nombre del directorio que se creará
- mode: Entero, especifica permisos de archivos, Windows ignora este parámetro, valor predeterminado: 0777
Crear un directorio
1
2static fs.mkdir(String path,
Object opt) async;
Parámetros de llamada:
- path: Cadena, especifique el nombre del directorio que se creará
- opt: Objeto, especificar parámetros de creación
Los parámetros de creación pueden contener los siguientes valores:
1
2
3
4{
recursive: false, // specify whether parent directories should be created. Default: false
mode: 0777 // specify the file mode. Default: 0777
}
rmdir
Eliminar un directorio
1static fs.rmdir(String path) async;
Parámetros de llamada:
- path: Cadena, especifica el nombre del directorio que se eliminará
rename
Cambiar el nombre de un archivo
1
2static fs.rename(String from,
String to) async;
Parámetros de llamada:
- from: Cadena, especifica el archivo cuyo nombre se va a cambiar
- to: Cadena, especifica el nuevo nombre del archivo que se modificará
copyFile
Copiar origen al destino. De forma predeterminada, si el destino ya existe, se sobrescribe.
1
2
3static fs.copyFile(String from,
String to,
Integer mode = 0) async;
Parámetros de llamada:
- from: Cadena, especifica el nombre del archivo fuente que se copiará
- to: Cadena, especifica el nombre del archivo de destino que se copiará.
- mode: Entero, especifica el modificador de la operación de copia, el valor predeterminado es 0
modo es un entero opcional que especifica el comportamiento de la operación de copia. Puede crear una máscara que consista en un OR bit a bit de dos o más valores (p. ej.fs.constants.COPYFILE_EXCL |fs.constants.COPYFILE_FICLONE).
- fs.constants.COPYFILE_EXCL: si el destino ya existe, la operación de copia fallará.
- fs.constants.COPYFILE_FICLONE: la operación de copia intentará crear un enlace de copia en escritura. Si la plataforma no admite la copia en escritura, se utiliza un mecanismo de copia alternativa.
- fs.constants.COPYFILE_FICLONE_FORCE: la operación de copia intentará crear un enlace de copia en escritura. Si la plataforma no admite la copia en escritura, la operación de copia fallará.
chmod
Establezca permisos de acceso para el archivo especificado. Windows no admite este método.
1
2static fs.chmod(String path,
Integer mode) async;
Parámetros de llamada:
- path: Cadena, archivo que especifica la operación.
- mode: Entero, especifica los permisos de acceso establecidos
lchmod
Establezca los permisos de acceso del archivo especificado. Si el archivo es un enlace suave, los permisos que apuntan al archivo no se cambiarán. Solo está disponible en las plataformas de las series macOS y BSD.
1
2static fs.lchmod(String path,
Integer mode) async;
Parámetros de llamada:
- path: Cadena, archivo que especifica la operación.
- mode: Entero, especifica los permisos de acceso establecidos
chown
Establezca el propietario del archivo especificado. Windows no admite este método.
1
2
3static fs.chown(String path,
Integer uid,
Integer gid) async;
Parámetros de llamada:
- path: Cadena, archivo que especifica la configuración
- uid: Entero, ID de usuario del propietario del archivo
- gid: Entero, ID del grupo propietario del archivo
lchown
Establezca el propietario del archivo especificado. Si el archivo especificado es un enlace suave, el propietario del archivo al que apunta no se cambiará. Windows no admite este método.
1
2
3static fs.lchown(String path,
Integer uid,
Integer gid) async;
Parámetros de llamada:
- path: Cadena, archivo que especifica la configuración
- uid: Entero, ID de usuario del propietario del archivo
- gid: Entero, ID del grupo propietario del archivo
stat
Consultar la información básica del archivo especificado.
1static Stat fs.stat(String path) async;
Parámetros de llamada:
- path: Cadena, especifica el archivo a consultar
Resultados de devolución:
- Stat, devuelve la información básica del archivo
lstat
Consulta la información básica del archivo especificado. A diferencia de stat, cuandopathCuando se trata de un enlace suave, la información devuelta será la información de este enlace suave en lugar de la información del archivo señalado.
1static Stat fs.lstat(String path) async;
Parámetros de llamada:
- path: Cadena, especifica el archivo a consultar
Resultados de devolución:
- Stat, devuelve la información básica del archivo
fstat
Consultar la información básica del archivo especificado.
1static Stat fs.fstat(FileHandle fd) async;
Parámetros de llamada:
- fd:FileHandle, objeto descriptor de archivo
Resultados de devolución:
- Stat, devuelve la información básica del archivo
readlink
Lea el archivo de enlace suave especificado. Este método no es compatible con Windows.
1static String fs.readlink(String path) async;
Parámetros de llamada:
- path: Cadena, especifica el archivo de enlace suave que se va a leer
Resultados de devolución:
- String, devuelve el nombre del archivo al que apunta el enlace suave
realpath
Devuelve la ruta absoluta de la ruta especificada. Si la ruta especificada contiene una ruta relativa, también se expandirá.
1static String fs.realpath(String path) async;
Parámetros de llamada:
- path: Cadena, especifica la ruta a leer
Resultados de devolución:
- String, devuelve la ruta absoluta procesada
symlink
Crear archivo de enlace suave
1
2
3static fs.symlink(String target,
String linkpath,
String type = "file") async;
Parámetros de llamada:
- target: Cadena, archivo de destino, que puede ser un archivo, directorio o una ruta inexistente
- linkpath: Cadena, el archivo de enlace suave que se creará
- type: Cadena, el tipo de conexión suave creada, los tipos opcionales son 'archivo', 'dir', 'unión', el valor predeterminado es 'archivo', este parámetro solo es válido en Windows, cuando es 'unión', el destino Se creará La ruta linkpath debe ser una ruta absoluta y el objetivo se convertirá automáticamente en una ruta absoluta.
truncate
Modifique el tamaño del archivo. Si la longitud especificada es mayor que el tamaño del archivo de origen, se rellenará con '\0'; de lo contrario, se perderá el contenido sobrante del archivo.
1
2static fs.truncate(String path,
Integer len) async;
Parámetros de llamada:
- path: Cadena, especifica la ruta del archivo modificado
- len: Entero, especifica el tamaño del archivo modificado
read
Leer el contenido del archivo según el descriptor del archivo.
1
2
3
4
5static Integer fs.read(FileHandle fd,
Buffer buffer,
Integer offset = 0,
Integer length = 0,
Integer position = -1) async;
Parámetros de llamada:
- fd:FileHandle, objeto descriptor de archivo
- buffer:Buffer, el resultado de la lectura se escribe enBufferobjeto
- offset: Entero,BufferCompensación de escritura, el valor predeterminado es 0
- length: Entero, el número de bytes leídos del archivo, el valor predeterminado es 0
- position: Entero, posición de lectura del archivo, el valor predeterminado es la posición actual del archivo
Resultados de devolución:
- Integer, el número real de bytes leídos
fchmod
Cambie el modo de archivo según el descriptor de archivo. Válido sólo en sistemas POSIX.
1
2static fs.fchmod(FileHandle fd,
Integer mode) async;
Parámetros de llamada:
- fd:FileHandle, objeto descriptor de archivo
- mode: Entero, el modo del archivo.
fchown
Dependiendo del descriptor del archivo, cambie el propietario. Válido sólo en sistemas POSIX.
1
2
3static fs.fchown(FileHandle fd,
Integer uid,
Integer gid) async;
Parámetros de llamada:
- fd:FileHandle, objeto descriptor de archivo
- uid: Entero, identificación de usuario
- gid: Entero, ID de grupo
fdatasync
Sincronizar datos al disco según el descriptor de archivo
1static fs.fdatasync(FileHandle fd) async;
Parámetros de llamada:
- fd:FileHandle, objeto descriptor de archivo
fsync
Sincronizar datos al disco según el descriptor de archivo
1static fs.fsync(FileHandle fd) async;
Parámetros de llamada:
- fd:FileHandle, objeto descriptor de archivo
readdir
Leer información del archivo del directorio especificado
1static NArray fs.readdir(String path) async;
Parámetros de llamada:
- path: Cadena, especifica el directorio a consultar
Resultados de devolución:
- NArray, devuelve la matriz de información del archivo del directorio
Leer información del archivo del directorio especificado
1
2static NArray fs.readdir(String path,
Object opts = {}) async;
Parámetros de llamada:
- path: Cadena, especifica el directorio a consultar
- opts: Objeto, especificar parámetros
Resultados de devolución:
- NArray, devuelve la matriz de información del archivo del directorio
Las opciones admitidas por el parámetro opts son las siguientes:
1
2
3{
"recursive": false // specify whether all subdirectories should be watched or only the current directory
}
openFile
Abrir un archivo para leer, escribir o ambos
1
2static SeekableStream fs.openFile(String fname,
String flags = "r") async;
Parámetros de llamada:
- fname: Cadena, especifique el nombre del archivo
- flags: Cadena, especifica el método de apertura del archivo, el valor predeterminado es "r", modo de solo lectura
Resultados de devolución:
- SeekableStream, devuelve el objeto de archivo abierto
Los métodos admitidos de indicadores de parámetros son los siguientes:
- 'r' Modo de solo lectura, genera un error si el archivo no existe.
- Modo de lectura y escritura 'r+', arroja un error si el archivo no existe.
- 'w' es el modo de sólo escritura. Si el archivo no existe, se creará automáticamente. Si existe, se borrará.
- Modo de lectura y escritura 'w+', el archivo se creará automáticamente si no existe.
- 'a' solo escribe el método agregar y el archivo se creará automáticamente si no existe.
- Modo de adición de lectura y escritura 'a+', el archivo se creará automáticamente si no existe.
open
abrir descriptor de archivo
1
2
3static FileHandle fs.open(String fname,
String flags = "r",
Integer mode = 0666) async;
Parámetros de llamada:
- fname: Cadena, especifique el nombre del archivo
- flags: Cadena, especifica el método de apertura del archivo, el valor predeterminado es "r", modo de solo lectura
- mode: Entero, al crear un archivo, especifique el modo de archivo, predeterminado 0666
Resultados de devolución:
- FileHandle, devuelve el descriptor del archivo abierto
Los métodos admitidos de indicadores de parámetros son los siguientes:
- 'r' Modo de solo lectura, genera un error si el archivo no existe.
- Modo de lectura y escritura 'r+', arroja un error si el archivo no existe.
- 'w' es el modo de sólo escritura. Si el archivo no existe, se creará automáticamente. Si existe, se borrará.
- Modo de lectura y escritura 'w+', el archivo se creará automáticamente si no existe.
- 'a' solo escribe el método agregar y el archivo se creará automáticamente si no existe.
- Modo de adición de lectura y escritura 'a+', el archivo se creará automáticamente si no existe.
close
cerrar descriptor de archivo
1static fs.close(FileHandle fd) async;
Parámetros de llamada:
- fd:FileHandle, objeto descriptor de archivo
openTextStream
Abrir un archivo de texto para leer, escribir o ambos
1
2static BufferedStream fs.openTextStream(String fname,
String flags = "r") async;
Parámetros de llamada:
- fname: Cadena, especifique el nombre del archivo
- flags: Cadena, especifica el método de apertura del archivo, el valor predeterminado es "r", modo de solo lectura
Resultados de devolución:
- BufferedStream, devuelve el objeto de archivo abierto
Los métodos admitidos de indicadores de parámetros son los siguientes:
- 'r' Modo de solo lectura, genera un error si el archivo no existe.
- Modo de lectura y escritura 'r+', arroja un error si el archivo no existe.
- 'w' es el modo de sólo escritura. Si el archivo no existe, se creará automáticamente. Si existe, se borrará.
- Modo de lectura y escritura 'w+', el archivo se creará automáticamente si no existe.
- 'a' solo escribe el método agregar y el archivo se creará automáticamente si no existe.
- Modo de adición de lectura y escritura 'a+', el archivo se creará automáticamente si no existe.
readTextFile
Abra un archivo de texto y lea su contenido.
1static String fs.readTextFile(String fname) async;
Parámetros de llamada:
- fname: Cadena, especifique el nombre del archivo
Resultados de devolución:
- String, devuelve el contenido de texto del archivo
readFile
Abra el archivo y lea el contenido.
1
2static Variant fs.readFile(String fname,
String encoding = "") async;
Parámetros de llamada:
- fname: Cadena, especifique el nombre del archivo
- encoding: Cadena, especifica el método de decodificación, no se realiza ninguna decodificación de forma predeterminada
Resultados de devolución:
- Variant, devuelve el contenido de texto del archivo
Abra el archivo y lea el contenido.
1
2static Variant fs.readFile(String fname,
Object options) async;
Parámetros de llamada:
- fname: Cadena, especifique el nombre del archivo
- options: Objeto, especifica opciones de lectura
Resultados de devolución:
- Variant, devuelve el contenido de texto del archivo
Las opciones admitidas por opciones son las siguientes:
1
2
3{
"encoding": "utf8" // specify the encoding, default is utf8.
}
readLines
Abra el archivo y lea un conjunto de líneas de texto en modo de matriz. El identificador de fin de línea se basa en la configuración del atributo EOL. De forma predeterminada, posix: "\n"; windows: "\r\n"
1
2static Array fs.readLines(String fname,
Integer maxlines = -1);
Parámetros de llamada:
- fname: Cadena, especifique el nombre del archivo
- maxlines: Entero, especifica el número máximo de líneas que se leerán esta vez. De forma predeterminada, se leen todas las líneas de texto.
Resultados de devolución:
- Array, devuelve una matriz de líneas de texto leídas. Si no hay datos para leer o la conexión se interrumpe, la matriz estará vacía.
write
Escriba el contenido en el archivo según el descriptor del archivo.
1
2
3
4
5static Integer fs.write(FileHandle fd,
Buffer buffer,
Integer offset = 0,
Integer length = -1,
Integer position = -1) async;
Parámetros de llamada:
- fd:FileHandle, objeto descriptor de archivo
- buffer:Buffer, para ser escritoBufferobjeto
- offset: Entero,BufferCompensación de lectura de datos, el valor predeterminado es 0
- length: Entero, el número de bytes escritos en el archivo, el valor predeterminado es -1
- position: Entero, ubicación de escritura del archivo, la ubicación predeterminada es la ubicación del archivo actual
Resultados de devolución:
- Integer, el número real de bytes escritos
Escriba el contenido en el archivo según el descriptor del archivo.
1
2
3
4static Integer fs.write(FileHandle fd,
String string,
Integer position = -1,
String encoding = "utf8") async;
Parámetros de llamada:
- fd:FileHandle, objeto descriptor de archivo
- string: Cadena, la cadena a escribir
- position: Entero, ubicación de escritura del archivo, la ubicación predeterminada es la ubicación del archivo actual
- encoding: Cadena, especifica el método de decodificación, la decodificación predeterminada es utf8
Resultados de devolución:
- Integer, el número real de bytes escritos
writeTextFile
Crea un archivo de texto y escribe el contenido.
1
2static fs.writeTextFile(String fname,
String txt) async;
Parámetros de llamada:
- fname: Cadena, especifique el nombre del archivo
- txt: Cadena, especifica la cadena que se escribirá
writeFile
Crear archivo binario y escribir contenido.
1
2
3static fs.writeFile(String fname,
Buffer data,
String opt = "binary") async;
Parámetros de llamada:
- fname: Cadena, especifique el nombre del archivo
- data:Buffer, especifica los datos binarios que se escribirán
- opt: Cadena, especifica opciones de escritura, será ignorada
Crear archivo binario y escribir contenido.
1
2
3static fs.writeFile(String fname,
Buffer data,
Object options) async;
Parámetros de llamada:
- fname: Cadena, especifique el nombre del archivo
- data:Buffer, especifica los datos binarios que se escribirán
- options: Objeto, especifica opciones de escritura, será ignorado
Crear un archivo y escribir contenido.
1
2
3static fs.writeFile(String fname,
String data,
String opt = "utf8") async;
Parámetros de llamada:
- fname: Cadena, especifique el nombre del archivo
- data: Cadena, especifica los datos a escribir
- opt: Cadena, especifica opciones de escritura
Crear un archivo y escribir contenido.
1
2
3static fs.writeFile(String fname,
String data,
Object options) async;
Parámetros de llamada:
- fname: Cadena, especifique el nombre del archivo
- data: Cadena, especifica los datos a escribir
- options: Objeto, especificar opciones de escritura
Las opciones admitidas por opciones son las siguientes:
1
2
3{
"encoding": "utf8" // specify the encoding, default is utf8.
}
appendFile
Crear archivo binario y escribir contenido.
1
2static fs.appendFile(String fname,
Buffer data) async;
Parámetros de llamada:
- fname: Cadena, especifique el nombre del archivo
- data:Buffer, especifica los datos binarios que se escribirán
setZipFS
configuraciónzipmapeo de archivos virtuales
1
2static fs.setZipFS(String fname,
Buffer data);
Parámetros de llamada:
clearZipFS
Clarozipmapeo de archivos virtuales
1static fs.clearZipFS(String fname = "");
Parámetros de llamada:
- fname: Cadena, especifica la ruta de mapeo, borra todos los cachés de forma predeterminada
watch
Ver un archivo y devolver el objeto observador correspondiente
1static FSWatcher fs.watch(String fname);
Parámetros de llamada:
- fname: Cadena, especifica el objeto de archivo que se observará
Resultados de devolución:
Ver un archivo y devolver el objeto observador correspondiente
1
2static FSWatcher fs.watch(String fname,
Function callback);
Parámetros de llamada:
- fname: Cadena, especifica el objeto de archivo que se observará
- callback: Función,
(evtType: 'change' | 'rename', filename: string) => any
la devolución de llamada de procesamiento cuando el objeto del archivo cambia
Resultados de devolución:
Ver un archivo y devolver el objeto observador correspondiente
1
2static FSWatcher fs.watch(String fname,
Object options);
Parámetros de llamada:
- fname: Cadena, especifica el objeto de archivo que se observará
- options: Objeto, opciones de observación
Resultados de devolución:
Las opciones admitidas por opciones son las siguientes:
1
2
3
4
5{
"persistent": true, // specify whether the process should continue to run as long as files are being watched
"recursive": false, // specify whether all subdirectories should be watched or only the current directory
"encoding": "utf8", // specify the encoding, default is utf8.
}
Ver un archivo y devolver el objeto observador correspondiente
1
2
3static FSWatcher fs.watch(String fname,
Object options,
Function callback);
Parámetros de llamada:
- fname: Cadena, especifica el objeto de archivo que se observará
- options: Objeto, opciones de observación
- callback: Función,
(evtType: 'change' | 'rename', filename: string) => any
la devolución de llamada de procesamiento cuando el objeto del archivo cambia
Resultados de devolución:
Las opciones admitidas por opciones son las siguientes:
1
2
3
4
5{
"persistent": true, // specify whether the process should continue to run as long as files are being watched
"recursive": false, // specify whether all subdirectories should be watched or only the current directory
"encoding": "utf8", // specify the encoding, default is utf8.
}
watchFile
Observar un expediente y devolver el correspondiente.StatsWatcherobjeto
1
2static StatsWatcher fs.watchFile(String fname,
Function callback);
Parámetros de llamada:
- fname: Cadena, especifica el objeto de archivo que se observará
- callback: Función,
(curStats: Stats, prevStats: Stats) => any
la devolución de llamada de procesamiento cuando cambian las estadísticas del objeto de archivo.
Resultados de devolución:
- StatsWatcher,StatsWatcherobjeto
Observar un expediente y devolver el correspondiente.StatsWatcherobjeto
1
2
3static StatsWatcher fs.watchFile(String fname,
Object options,
Function callback);
Parámetros de llamada:
- fname: Cadena, especifica el objeto de archivo que se observará
- options: Objeto, opciones de observación
- callback: Función,
(curStats: Stats, prevStats: Stats) => any
la devolución de llamada de procesamiento cuando cambian las estadísticas del objeto de archivo.
Resultados de devolución:
- StatsWatcher,StatsWatcherobjeto
Las opciones admitidas por opciones son las siguientes:
1
2
3
4
5{
"persistent": true, // specify whether the process should continue to run as long as files are being watched
"recursive": false, // specify whether all subdirectories should be watched or only the current directory
"encoding": "utf8", // specify the encoding, default is utf8.
}
unwatchFile
De observar fname'sStatsWatcherEliminar todas las devoluciones de llamadas de eventos de observación de
1static fs.unwatchFile(String fname);
Parámetros de llamada:
- fname: Cadena, especifica el objeto de archivo que se observará
Resultados de devolución:
- StatsWatcherobjeto
De observar fname'sStatsWatchercallback
Eliminar la devolución de llamada de la devolución de llamada del evento de observación
1
2static fs.unwatchFile(String fname,
Function callback);
Parámetros de llamada:
- fname: Cadena, especifica el objeto de archivo que se observará
- callback: Función, la devolución de llamada que se eliminará
Resultados de devolución:
- StatsWatcherobjeto
Incluso si la devolución de llamada ya no esStatsWatcherNo se informará ningún error en la devolución de llamada del evento de observación.
constante
SEEK_SET
buscar método constante, moverse a la posición absoluta
1const fs.SEEK_SET = 0;
SEEK_CUR
buscar método constante, moverse a la posición relativa de la posición actual
1const fs.SEEK_CUR = 1;
SEEK_END
Modo de búsqueda constante, moverse a la posición relativa del final del archivo.
1const fs.SEEK_END = 2;