English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Node FS es un módulo integrado de Node.js que le ayuda a manejar y operar archivos.
Con Node FS, puede realizar las siguientes operaciones en el archivo:
lectura de archivo
Crear o sobrescribir archivo
Actualizar archivo
删除文件
Renombrar archivo
Node.js proporciona un conjunto de API de operaciones de archivos similares a UNIX (POSIX).
La sintaxis de importación de módulo de sistema de archivos (fs) de Node se muestra a continuación:
var fs = require("fs")
El módulo de sistema de archivos de Node.js (módulo fs) tiene métodos tanto asíncronos como síncronos, por ejemplo, las funciones de lectura de contenido de archivo tienen fs.readFile() asíncrono y fs.readFileSync() síncrono.
El último parámetro de la función de método asíncrono es la función de devolución de llamada, el primer parámetro de la función de devolución de llamada contiene la información de error (error).
Se recomienda usar métodos asíncronos, ya que son más rápidos y eficientes que los síncronos, y no bloquean.
Crear el archivo input.txt, el contenido es el siguiente:
Dirección del sitio web del tutorial básico: es.oldtoolbag.com Ejemplo de lectura de archivo
Crear el archivo file.js, el código es el siguiente:
var fs = require("fs"); // Lectura asíncrona fs.readFile('input.txt', function(err, data) { if (err) { return console.error(err); } console.log("Lectura asíncrona: "); + data.toString()); }); // Lectura síncrona var data = fs.readFileSync('input.txt'); console.log("Lectura síncrona: "); + data.toString()); console.log("La ejecución del programa se ha completado.");
El resultado de la ejecución del código anterior es el siguiente:
$ node file.js Lectura síncrona: Dirección de la página web de la guía básica: es.oldtoolbag.com Ejemplo de lectura de archivo La ejecución del programa se ha completado. Lectura asíncrona: Dirección de la página web de la guía básica: es.oldtoolbag.com Ejemplo de lectura de archivo
Ahora, vamos a entender específicamente los métodos del sistema de archivos de Node.js.
A continuación, se muestra el formato de sintaxis para abrir archivos en modo asíncrono:
fs.open(path, flags[, mode], callback)
Descripción de los parámetros:
path - La ruta del archivo.
flags - Comportamiento al abrir el archivo. Los valores específicos se detallan a continuación.
mode - Establecer el modo de archivo (permisos), el permiso predeterminado de creación de archivo es 0666(readable, writable).
callback - Callback function, with two parameters such as: callback(err, fd).
The flags parameter can be the following values:
Flag | Description |
---|---|
r | Open the file in read mode. If the file does not exist, an exception is thrown. |
r+ | Open the file in read/write mode. If the file does not exist, an exception is thrown. |
rs | Read files synchronously. |
rs+ | Read and write files synchronously. |
w | Open the file in write mode, if the file does not exist, it will be created. |
wx | Similar to 'w', but if the file path exists, the file write fails. |
w+ | Open the file in read/write mode, if the file does not exist, it will be created. |
wx+ | Similar to 'w+However, if the file path exists, the file read/write fails. |
a | Open the file in append mode, if the file does not exist, it will be created. |
ax | Similar to 'a', but if the file path exists, the file append fails. |
a+ | Open the file in read append mode, if the file does not exist, it will be created. |
ax+ | Similar to 'a+However, if the file path exists, the file read append fails. |
Next, we create the file.js file and open the input.txt file for reading and writing, as shown in the code below:
var fs = require("fs"); // Asynchronous file opening console.log("¡Preparando para abrir el archivo!"); fs.open('input.txt', 'r+', function(err, fd) { if (err) { return console.error(err); } console.log("¡El archivo se ha abierto con éxito!"); });
El resultado de la ejecución del código anterior es el siguiente:
$ node file.js 准备打开文件! 文件打开成功!
The following is the syntax format for obtaining file information asynchronously:
fs.stat(path, callback)
Descripción de los parámetros:
path - Ruta del archivo.
callback - Callback function, with two parameters such as: (err, stats), stats is a fs.Stats object.
After fs.stat(path) is executed, an instance of the stats class will be returned to its callback function. You can use the methods provided by the stats class to determine the relevant properties of the file. For example, to determine whether it is a file:
var fs = require('fs'); fs.stat('/Users/liuht/code/itbilu/demo/fs.js', function (err, stats) { console.log(stats.isFile()); //true )
The methods in the stats class include:
Method | Description |
---|---|
stats.isFile() | If it is a file, it returns true; otherwise, it returns false. |
stats.isDirectory() | If it is a directory, it returns true; otherwise, it returns false. |
stats.isBlockDevice() | If it is a block device, it returns true; otherwise, it returns false. |
stats.isCharacterDevice() | If it is a character device, it returns true; otherwise, it returns false. |
stats.isSymbolicLink() | Si es un enlace simbólico devuelve true, de lo contrario devuelve false. |
stats.isFIFO() | Si es FIFO, devuelve true, de lo contrario devuelve false. FIFO es un tipo especial de tubería de comandos en UNIX. |
stats.isSocket() | Si es Socket devuelve true, de lo contrario devuelve false. |
A continuación, creamos el archivo file.js con el código siguiente:
var fs = require("fs"); console.log("¡Preparando para abrir el archivo!"); fs.stat('input.txt', function(err, stats) { if (err) { return console.error(err); } console.log(stats); console.log("¡Éxito en la lectura de información de archivo!"); // Detectar tipo de archivo console.log("¿Es un archivo (isFile)? "); + stats.isFile()); console.log("¿Es un directorio (isDirectory)? "); + stats.isDirectory()); });
El resultado de la ejecución del código anterior es el siguiente:
$ node file.js 准备打开文件! { dev: 16777220 , modo: 33188, nlink: 1, uid: 501, gid: 20 , rdev: 0 , blksize: 4096, ino: 40333161, tamaño: 61, bloques: 8, atime: Mon Sep 07 2015 17:43:55 GMT+0800 (CST), mtime: Mon Sep 07 2015 17:22:35 GMT+0800 (CST), ctime: Mon Sep 07 2015 17:22:35 GMT+0800 (CST)} ¡Éxito en la lectura de información de archivo! ¿Es un archivo (isFile)? true ¿Es un directorio (isDirectory)? false
A continuación se muestra el formato de sintaxis para escribir archivos en modo asincrónico:
escribeArchivo(archivo, datos[, opciones], callback)
Escribir archivo abre directamente el archivo por defecto es w modo, por lo que si el archivo existe, el contenido escrito por este método sobrescribirá el contenido antiguo del archivo.
Descripción de los parámetros:
archivo - Nombre del archivo o descriptor de archivo.
datos - Los datos a escribir en el archivo, que pueden ser String (cadena) o objeto Buffer (búfer).
opciones - Este parámetro es un objeto que contiene {encoding, mode, flag}. El código de codificación predeterminado es utf8, modo 0666 ,flag como 'w'
callback - La función de retroalimentación, la función de retroalimentación solo contiene el parámetro de información de error (err), y devuelve en caso de falla de escritura.
A continuación, creamos el archivo file.js con el código siguiente:
var fs = require("fs"); console.log("Preparando escritura de archivo"); escribeArchivo('input.txt', 'Soy el contenido de archivo escrito mediante escribeArchivo', function(err) { if (err) { return console.error(err); } console.log("¡Escribir datos exitosamente!"); console.log("--------Soy una línea de separación-------------") console.log("¡Leyendo los datos escritos!"); fs.readFile('input.txt', function(err, data) { if (err) { return console.error(err); } console.log("¡Lectura asíncrona de datos del archivo: ", + data.toString()); }); });
El resultado de la ejecución del código anterior es el siguiente:
$ node file.js ¡Preparando para escribir el archivo ¡Escribir datos exitosamente! --------Soy una línea de separación------------- ¡Leyendo los datos escritos! Lectura asíncrona de datos del archivo: estoy escribiendo el contenido del archivo a través de fs.writeFile
A continuación se muestra el formato de sintaxis para leer archivos en modo asíncrono:
fs.read(fd, buffer, offset, length, position, callback)
Este método utiliza un descriptor de archivo para leer el archivo.
Descripción de los parámetros:
fd - descripción del archivo proporcionada por fs.open().
buffer - búfer de escritura de datos.
offset - desplazamiento de escritura en el búfer.
length - número de bytes que se leerán del archivo.
position - posición de inicio de lectura del archivo, si el valor de position es null, se leerá desde la posición del puntero del archivo actual.
callback - callback, tres parámetros err, bytesRead, buffer, err es el mensaje de error, bytesRead indica el número de bytes leídos, buffer es el objeto de búfer.
input.txt 文件内容为:
Dirección del sitio web del tutorial básico: es.oldtoolbag.com
A continuación, creamos el archivo file.js con el código siguiente:
var fs = require("fs"); var buf = new Buffer.alloc(1024); console.log("¡Preparando para abrir el archivo existente!"); fs.open('input.txt', 'r+', function(err, fd) { if (err) { return console.error(err); } console.log("¡El archivo se ha abierto con éxito!"); console.log("¡Preparando para leer el archivo:"); fs.read(fd, buf, 0, buf.length, 0, function(err, bytes) { if (err) { console.log(err); } console.log(bytes + " bytes leídos"); // 仅输出读取的字节 if (bytes > 0) { console.log(buf.slice(0, bytes).toString()); } }); });
El resultado de la ejecución del código anterior es el siguiente:
$ node file.js ¡Preparando para abrir el archivo existente! 文件打开成功! ¡Preparando para leer el archivo: 42 bytes leídos Dirección del sitio web del tutorial básico: es.oldtoolbag.com
A continuación se muestra el formato de sintaxis para cerrar archivos en modo asíncrono:
fs.close(fd, callback)
Este método utiliza un descriptor de archivo para leer el archivo.
Descripción de los parámetros:
fd - descripción del archivo proporcionada por fs.open().
callback - Función de callback, sin parámetros.
input.txt 文件内容为:
Dirección del sitio web del tutorial básico: es.oldtoolbag.com
A continuación, creamos el archivo file.js con el código siguiente:
var fs = require("fs"); var buf = new Buffer.alloc(1024); console.log("¡Preparando para abrir el archivo!"); fs.open('input.txt', 'r+', function(err, fd) { if (err) { return console.error(err); } console.log("¡El archivo se ha abierto con éxito!"); console.log("¡Preparando para leer el archivo!"); fs.read(fd, buf, 0, buf.length, 0, function(err, bytes) { if (err) { console.log(err); } // 仅输出读取的字节 if (bytes > 0) { console.log(buf.slice(0, bytes).toString()); } // 关闭文件 fs.close(fd, function(err) { if (err) { console.log(err); } console.log("¡El archivo se ha cerrado con éxito!"); }); }); });
El resultado de la ejecución del código anterior es el siguiente:
$ node file.js 准备打开文件! 文件打开成功! ¡Preparando para leer el archivo! Dirección del sitio web del tutorial básico: es.oldtoolbag.com 文件关闭成功
A continuación se muestra el formato de sintaxis para capturar archivos en modo asíncrono:
fs.ftruncate(fd, len, callback)
Este método utiliza un descriptor de archivo para leer el archivo.
Descripción de los parámetros:
fd - descripción del archivo proporcionada por fs.open().
len - longitud del contenido del archivo que se captura.
callback - Función de callback, sin parámetros.
input.txt 文件内容为:
site:es.oldtoolbag.com
A continuación, creamos el archivo file.js con el código siguiente:
var fs = require("fs"); var buf = new Buffer.alloc(1024); console.log("¡Preparando para abrir el archivo!"); fs.open('input.txt', 'r+', function(err, fd) { if (err) { return console.error(err); } console.log("¡El archivo se ha abierto con éxito!"); 10字节内的文件内容,超出部分将被去除。 // 截取文件 fs.ftruncate(fd, 10, function(err) { if (err) { console.log(err); } console.log("文件截取成功。"); console.log("读取相同的文件"); fs.read(fd, buf, 0, buf.length, 0, function(err, bytes) { if (err) { console.log(err); } // 仅输出读取的字节 if (bytes > 0) { console.log(buf.slice(0, bytes).toString()); } // 关闭文件 fs.close(fd, function(err) { if (err) { console.log(err); } console.log("文件关闭成功!"); }); }); }); });
El resultado de la ejecución del código anterior es el siguiente:
$ node file.js 准备打开文件! 文件打开成功! 截取10字节内的文件内容,超出部分将被去除。 文件截取成功。 读取相同的文件 site:www.r 文件关闭成功
以下为删除文件的语法格式:
fs.unlink(path, callback)
Descripción de los parámetros:
path - Ruta del archivo.
callback - Función de callback, sin parámetros.
input.txt 文件内容为:
site:es.oldtoolbag.com
A continuación, creamos el archivo file.js con el código siguiente:
var fs = require("fs"); console.log("准备删除文件!"); fs.unlink('input.txt', function(err) { if (err) { return console.error(err); } console.log("文件删除成功!"); });
El resultado de la ejecución del código anterior es el siguiente:
$ node file.js 准备删除文件! 文件删除成功!
再去查看 input.txt 文件,发现已经不存在了。
以下为创建目录的语法格式:
fs.mkdir(path[, options], callback)
Descripción de los parámetros:
path - Ruta del archivo.
options 参数可以是:
recursive - 是否以递归的方式创建目录,默认为 false。
mode - 设置目录权限,默认为 0777.
callback - Función de callback, sin parámetros.
A continuación, creamos el archivo file.js con el código siguiente:
var fs = require("fs"); // tmp 目录必须存在 console.log("创建目录 /tmp/test/"); fs.mkdir("/tmp/test/ if (err) { return console.error(err); } console.log("目录创建成功。"); });
El resultado de la ejecución del código anterior es el siguiente:
$ node file.js 创建目录 /tmp/test/ 目录创建成功。
可以添加 recursive: true 参数,不管创建的目录 /tmp 和 /tmp/a 是否存在:
fs.mkdir('/tmp/a/apple', { recursive: true }, (err) => { if (err) throw err; });
A continuación, se muestra el formato de sintaxis para leer el directorio:
fs.readdir(path, callback)
Descripción de los parámetros:
path - Ruta del archivo.
callback - Función de callback, la función de callback tiene dos parámetros err, files, err es la información de error, files es la lista de arrays de archivos del directorio.
A continuación, creamos el archivo file.js con el código siguiente:
var fs = require("fs"); console.log("Ver /Directorio tmp fs.readdir("/tmp/",function(err, files){ if (err) { return console.error(err); } files.forEach(function(file){ console.log(file); }); });
El resultado de la ejecución del código anterior es el siguiente:
$ node file.js Ver /Directorio tmp input.out output.out test test.txt
A continuación, se muestra el formato de sintaxis para eliminar el directorio:
fs.rmdir(path, callback)
Descripción de los parámetros:
path - Ruta del archivo.
callback - Función de callback, sin parámetros.
A continuación, creamos el archivo file.js con el código siguiente:
var fs = require("fs"); // Antes de ejecutar, crear un directorio vacío /tmp/Directorio test console.log("Preparando para eliminar el directorio /tmp/test"); fs.rmdir("/tmp/test",function(err){ if (err) { return console.error(err); } console.log("Lectura /Directorio tmp fs.readdir("/tmp/",function(err, files){ if (err) { return console.error(err); } files.forEach(function(file){ console.log(file); }); }); });
El resultado de la ejecución del código anterior es el siguiente:
$ node file.js Preparando para eliminar el directorio /tmp/test Lectura /Directorio tmp ……
A continuación, se muestra la lista de métodos del módulo de archivos de Node.js:
Número de secuencia | Método & Descripción |
---|---|
1 | fs.rename(oldPath, newPath, callback) La función de callback de rename(). No tiene parámetros, pero puede lanzar excepciones. |
2 | fs.ftruncate(fd, len, callback) La función de callback de ftruncate(). No tiene parámetros, pero puede lanzar excepciones. |
3 | fs.ftruncateSync(fd, len) ftruncate() sincronizado |
4 | fs.truncate(path, len, callback) La función de callback de truncate(). No tiene parámetros, pero puede lanzar excepciones. |
5 | fs.truncateSync(path, len) Sincronizar truncate(). |
6 | fs.chown(path, uid, gid, callback) Asincrónico chown(). La función de callback no tiene parámetros, pero puede lanzar excepciones. |
7 | fs.chownSync(path, uid, gid) Sincronizar chown(). |
8 | fs.fchown(fd, uid, gid, callback) Asincrónico fchown(). La función de callback no tiene parámetros, pero puede lanzar excepciones. |
9 | fs.fchownSync(fd, uid, gid) Sincronizar fchown(). |
10 | fs.lchown(path, uid, gid, callback) Asincrónico lchown(). La función de callback no tiene parámetros, pero puede lanzar excepciones. |
11 | fs.lchownSync(path, uid, gid) Sincronizar lchown(). |
12 | fs.chmod(path, mode, callback) Asincrónico chmod(). La función de callback no tiene parámetros, pero puede lanzar excepciones. |
13 | fs.chmodSync(path, mode) Sincronizar chmod(). |
14 | fs.fchmod(fd, mode, callback) Asincrónico fchmod(). La función de callback no tiene parámetros, pero puede lanzar excepciones. |
15 | fs.fchmodSync(fd, mode) Sincronizar fchmod(). |
16 | fs.lchmod(path, mode, callback) Asincrónico lchmod(). La función de callback no tiene parámetros, pero puede lanzar excepciones. Solo disponible en Mac OS X. |
17 | fs.lchmodSync(path, mode) Sincronizar lchmod(). |
18 | fs.stat(path, callback) Asincrónico stat(). La función de callback tiene dos parámetros: err, stats, donde stats es un objeto fs.Stats. |
19 | fs.lstat(path, callback) Asincrónico lstat(). La función de callback tiene dos parámetros: err, stats, donde stats es un objeto fs.Stats. |
20 | fs.fstat(fd, callback) Asincrónico fstat(). La función de callback tiene dos parámetros: err, stats, donde stats es un objeto fs.Stats. |
21 | fs.statSync(path) Sincronizar stat(). Devuelve una instancia de fs.Stats. |
22 | fs.lstatSync(path) sincronizado lstat(). Devuelve una instancia de fs.Stats. |
23 | fs.fstatSync(fd) sincronizado fstat(). Devuelve una instancia de fs.Stats. |
24 | fs.link(srcpath, dstpath, callback) asincrónico link(). La función de callback no tiene parámetros, pero puede lanzar excepciones. |
25 | fs.linkSync(srcpath, dstpath) sincronizado link(). |
26 | fs.symlink(srcpath, dstpath[, type], callback) asincrónico symlink(). La función de callback no tiene parámetros, pero puede lanzar excepciones. El parámetro type puede establecerse en 'dir', 'file', o 'junction' (por defecto 'file'). |
27 | fs.symlinkSync(srcpath, dstpath[, type]) sincronizado symlink(). |
28 | fs.readlink(path, callback) asincrónico readlink(). La función de callback tiene dos parámetros err, linkString. |
29 | fs.realpath(path[, cache], callback) asincrónico realpath(). La función de callback tiene dos parámetros err, resolvedPath. |
30 | fs.realpathSync(path[, cache]) sincronizado realpath(). Devuelve la ruta absoluta. |
31 | fs.unlink(path, callback) asincrónico unlink(). La función de callback no tiene parámetros, pero puede lanzar excepciones. |
32 | fs.unlinkSync(path) sincronizado unlink(). |
33 | fs.rmdir(path, callback) asincrónico rmdir(). La función de callback no tiene parámetros, pero puede lanzar excepciones. |
34 | fs.rmdirSync(path) sincronizado rmdir(). |
35 | fs.mkdir(path[, mode], callback) asincrónico mkdir(2). La función de callback no tiene parámetros, pero puede lanzar excepciones. El permiso de acceso predeterminado es 0777. |
36 | fs.mkdirSync(path[, mode]) sincronizado mkdir(). |
37 | fs.readdir(path, callback) asincrónico readdir(3). Lee el contenido del directorio. |
38 | fs.readdirSync(path) sincronizado readdir(). Devuelve una lista de arrays de archivos. |
39 | fs.close(fd, callback) close() asíncrono. La función de callback no tiene parámetros, pero puede lanzar excepciones. |
40 | fs.closeSync(fd) close() sincrono. |
41 | fs.open(path, flags[, modo], callback) Abrir archivo asíncronamente. |
42 | fs.openSync(path, flags[, modo]) Versión sincrona de fs.open(). |
43 | fs.utimes(path, atime, mtime, callback) |
44 | fs.utimesSync(path, atime, mtime) Modificar la marca de tiempo del archivo, el archivo se especifica mediante la ruta de archivo. |
45 | fs.futimes(fd, atime, mtime, callback) |
46 | fs.futimesSync(fd, atime, mtime) Modificar la marca de tiempo del archivo, especificada a través del descriptor de archivo. |
47 | fs.fsync(fd, callback) fsync asíncrono. La función de callback no tiene parámetros, pero puede lanzar excepciones. |
48 | fs.fsyncSync(fd) fsync sincrono. |
49 | fs.write(fd, buffer, offset, length[, posición], callback) Escribir contenido del búfer en el archivo especificado mediante el descriptor de archivo. |
50 | fs.write(fd, data[, posición[, codificación]], callback) Escribir contenido de archivo a través del descriptor de archivo fd. |
51 | fs.writeSync(fd, buffer, offset, length[, posición]) Versión sincrona de fs.write(). |
52 | fs.writeSync(fd, data[, posición[, codificación]]) Versión sincrona de fs.write(). |
53 | fs.read(fd, buffer, offset, length, position, callback) Lectura de contenido de archivo a través del descriptor de archivo fd. |
54 | fs.readSync(fd, buffer, offset, length, position) Versión sincrona de fs.read. |
55 | fs.readFile(filename[, opciones], callback) Lectura asíncrona de contenido de archivo. |
56 | fs.readFileSync(filename[, opciones]) Lectura de archivos en modo sincrono de fs.readFile. |
57 | fs.writeFile(filename, data[, options], callback) Escribe contenido de archivo de manera asincrónica. |
58 | fs.writeFileSync(filename, data[, options]) Versión síncrona de fs.writeFile. |
59 | fs.appendFile(filename, data[, options], callback) Añade contenido de archivo de manera asincrónica. |
60 | fs.appendFileSync(filename, data[, options]) Versión síncrona de fs.appendFile. |
61 | fs.watchFile(filename[, options], listener) Mira la modificación del archivo. |
62 | fs.unwatchFile(filename[, listener]) Detén la revisión de la modificación del nombre de archivo. |
63 | fs.watch(filename[, options][, listener]) Mira la modificación del nombre de archivo, el nombre de archivo puede ser un archivo o un directorio. Devuelve el objeto fs.FSWatcher. |
64 | fs.exists(path, callback) Verifica si la ruta dada existe. |
65 | fs.existsSync(path) Versión síncrona de fs.exists. |
66 | fs.access(path[, mode], callback) Prueba los permisos de usuario en la ruta especificada. |
67 | fs.accessSync(path[, mode]) Versión síncrona de fs.access. |
68 | fs.createReadStream(path[, options]) Devuelve el objeto ReadStream. |
69 | fs.createWriteStream(path[, options]) Devuelve el objeto WriteStream. |
70 | fs.symlink(srcpath, dstpath[, type], callback) La función de enlace síncrono asincrónica().La función de devolución de llamada no tiene parámetros, pero puede lanzar excepciones. |
Para más información, consulte la descripción del módulo de archivos en el sitio web oficial:Sistema de archivos.