Node.js - 文件系统



Node.js API 是一种服务器端编程技术。因此,可能需要Node.js应用程序才能与服务器的物理文件系统进行交互。Node.js API 包含 fs 模块,使开发人员能够对磁盘文件执行读/写操作。Node.js 中的 fs 模块为文件处理提供了同步和异步方法。

要使用文件系统函数,您需要使用以下语法导入 fs 模块 -


 var fs = require("fs")

同步与异步

fs 模块中的每个方法都有同步和异步版本。异步方法将最后一个参数作为完成函数回调,将回调函数的第一个参数作为错误。

例如,在文件中写入数据的同步方法是 -


 fs.writeFileSync(file, data[, options])

另一方面,它的异步版本具有以下语法 -


 fs.writeFile(file, data[, options], callback)

与同步方法相比,异步方法本质上是非阻塞的。

对于本章中的示例代码,我们将使用一个名为 input.txt 的文本文件,其中包含以下内容 -

qikepu.com is giving self learning content
to teach the world in simple and easy way!!!!!

写入文件

以下程序演示如何使用同步和异步方法在文件中写入数据。


const fs = require('fs');
var text = `qikepu.com is giving self learning content
to teach the world in simple and easy way!!!!!
`;

console.log("Writing synchronously");
fs.writeFileSync("input.txt", text);

console.log("Writing asynchronously");
fs.writeFile('input.txt', text, function (err) {	

	 	if (err)
	 	 	 console.log(err);
	 	else
	 	 	 console.log('Write operation complete.');
});

输出

Writing synchronously
Writing asynchronously
Write operation complete.

读取文件

fs 模块中的 ReadFile() 方法异步读取文件。它具有以下语法 -


 fs.readFile(fileName [,options], callback)

另一方面,ReadFileSync() 方法是其同步版本,语法如下 -


 fs.readFileSync(fileName [,options])

以下程序以同步和异步方式读取 input.txt 文件。


const fs = require('fs');

console.log("Reading synchronously");
data = fs.readFileSync("input.txt");
console.log(data.toString());

console.log("Reading asynchronously");
fs.readFile('input.txt', function (err, data) {
	 	if (err) {
	 	 	 return console.error(err);
	 	}
	 	console.log("Asynchronous read: " + data.toString());
});
console.log('Read operation complete.');

输出

Reading synchronously
qikepu.com giving self learning content
to teach the world in simple and easy way!!!!!

Reading asynchronously
Read operation complete.
Asynchronous read: qikepu.com is giving self learning content
to teach the world in simple and easy way!!!!!

打开文件

readFile() 和 writeFile() 方法隐式打开和关闭要读取/写入的文件。相反,您可以显式打开文件,设置文件打开模式,指示是将其用于读取还是写入,然后关闭文件。

open() 方法具有以下签名 -


 fs.open(path, flags[, mode], callback)

参数

  • path - 这是具有文件名(包括路径)的字符串。
  • flags - 标志指示要打开的文件的行为。下面提到了所有可能的值。
  • mode - 它设置文件模式(权限和粘滞位),但前提是文件已创建。默认为0666,可读可写。
  • callback - 这是获取两个参数(err,fd)的回调函数。

flag 参数的值为 :

Flag 描述
r

打开文件进行阅读。如果文件不存在,则会发生异常。

r+

打开文件进行读取和写入。如果文件不存在,则会发生异常。

rs

以同步模式打开文件进行读取。

rs+

打开文件进行读取和写入,要求操作系统同步打开它。请参阅“rs”的注释,了解如何谨慎使用此功能。

w

打开文件进行写入。文件被创建(如果不存在)或被截断(如果存在)。

wx

类似于“w”,但如果路径存在,则失败。

w+

打开文件进行读取和写入。文件被创建(如果不存在)或被截断(如果存在)。

wx+

类似于 'w+',但如果路径存在,则失败。

a

打开文件进行追加。如果文件不存在,则创建该文件。

ax

类似于“a”,但如果路径存在,则失败。

a+

打开文件进行读取和追加。如果文件不存在,则创建该文件。

ax+

类似于“a+”,但如果路径存在,则失败。

让我们打开一个文件“input.txt”,用于将数据写入其中。


const fd = fs.open('input.txt', 'w', (err, fd) => {
	 	if (err) {
	 	 	 console.log(err);
	 	 	 return;
	 	}
});

To open() 方法返回对文件的引用,称为文件描述符。文件描述符是唯一的整数,用作执行写入和读取操作的方法的参数。

fs 模块中的 write() 方法将数据保存到 open() 方法返回的文件描述符所引用的文件中。


write(fd, string[, position[, encoding]], callback)

参数

  • fd − 文件描述符
  • string - 要写入的数据
  • position − 开始写入 默认值:null
  • encoding − 字符编码字符串 默认值: 'utf8'
  • callback − 要调用的回调函数。

以下代码段将给定的文本写入我们上面打开的文件中。


var data = `Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!
`;

if (err) {
	 	console.log(err);
	 	return;
}

始终建议关闭打开的文件,尤其是在以可写模式打开时。


// Close the file
fs.close(fd, (err) => {
	 	if (err) {
	 	 	 console.log(err);
	 	 	 return;
	 	}
});

让我们把所有这些片段放在一起作为一个程序,以可写模式打开一个文件,在其中放入一些数据,然后关闭它。


const fs = require('fs');

// Open a file for writing
const fd = fs.open('input.txt', 'w', (err, fd) => {
	 	if (err) {
	 	 	 console.log(err);
	 	 	 return;
	 	}

	 	// Write some data to the file
	 	var data = `Tutorials Point is giving self learning content
	 	to teach the world in simple and easy way!!!!!
	 	`;

	 	fs.write(fd, data, (err) => {
	 	 	 if (err) {
	 	 	 	 	console.log(err);
	 	 	 	 	return;
	 	 	 }

	 	 	 // Close the file
	 	 	 fs.close(fd, (err) => {
	 	 	 	 	if (err) {
	 	 	 	 	 	 console.log(err);
	 	 	 	 	 	 return;
	 	 	 	 	}

	 	 	 	 	console.log('The file was written successfully!');
	 	 	 });
	 	});
});

执行时,上述程序会导致在当前目录中创建input.txt。

要读回文件,必须以读取模式打开它。fs 模块中的 read() 方法使用文件描述符并在缓冲区对象中检索其中的数据。


 read(fd, buffer[, options], callback)

参数

  • fd − 文件描述符
  • buffer - 将写入数据的缓冲区。
  • options − 偏移、长度和位置
  • callback − 要调用的函数。

要在 input.txt 中读回数据,请使用 read() 方法,如下所示 -


var fs = require('fs');

fs.open('test.txt', 'r', function (err, fd) {
	 		
	 	if (err) {
	 	 	 return console.error(err);
	 	}
	 		
	 	var buffr = Buffer.alloc(1024);
	 		
	 	fs.read(fd, buffr, function (err) {
	 	 	 	
	 	 	 if (err) throw err;
	 	 	 	 	else
	 	 	 console.log(buffr.toString());
	 	});
	 	 	 		
	 	// Close the opened file.
	 	fs.close(fd, function (err) {
	 	 	 if (err) throw err;
	 	});
});

运行上述程序。您的input.txt内容将被检索并显示在控制台上。

Promise API 接口

在Node.js应用程序中,如果需要异步执行许多不同的活动,则可能存在大量嵌套回调。但是,代码可能会变得杂乱无章,通常称为回调地狱。为了克服这个问题,JavaScript 引入了 promise 的概念。

Promise 本质上是对执行异步任务的回调的改进。它表示将完成或拒绝的活动。如果承诺兑现了,它就解决了;否则,它将被拒绝。与典型的回调不同,Promise 可以被链接。

在 Node.js 版本 10 之后的版本中,fs 模块包含了实现 promise 概念的文件管理方法。(Callback 和 synchronous 方法也存在)。

新的异步函数使用 async/await 语法。该函数以 async 关键字为前缀,并且始终返回一个 promise。关键字 await 使 JavaScript 等待,直到该承诺解决并返回其结果。

fs 模块中 writeFile() 方法的 Promise API 版本如下 -


 fsPromises.writeFile(file, data[, options])

参数

  • file - 文件名或FileHandle
  • data − 字符串或缓冲区。该方法返回一个 Promise 对象。它异步将数据写入文件,如果文件已存在,则替换该文件。data 可以是字符串,也可以是缓冲区。

以下程序使用 Promisified writeFile() 方法。


const fs = require("fs");
var data = `qikepu.com is giving self learning content
to teach the world in simple and easy way!!!!!
`;
async function write_file() {
	 	await fs.promises.writeFile("input.txt", data);
	 	console.log("Data written successfully");
}

write_file();

另一方面,Promise API 中的 readFile() 方法具有以下语法 -


 fsPromises.readFile(path[, options])#

参数

  • path - 文件名或FileHandle
  • options - 包括编码、标志、信号

该方法返回 − 一个 Promise。它异步读取文件的全部内容。


const fs = require("fs");

async function read_file() {
	 	const secret = await fs.promises.readFile("input.txt");
	 	console.log(secret.toString());
}

read_file();

要检索文件(input.txt)的内容,请保存上述代码并从命令行运行。

获取文件信息

语法

以下是获取文件信息的方法的语法 -


 fs.stat(path, callback)

参数

以下是所用参数的描述 -

  • path - 这是具有文件名(包括路径)的字符串。
  • callback - 这是回调函数,它获取两个参数(err,stats),其中stats是fs的对象。统计信息类型,在示例下方打印。

除了下面示例中打印的重要属性外,fs 中还有几种有用的方法。Stats 类,可用于检查文件类型。下表给出了这些方法。

方法 描述
stats.isFile()

如果文件类型为简单文件,则返回 true。

stats.isDirectory()

如果目录的文件类型,则返回 true。

stats.isBlockDevice()

如果块设备的文件类型,则返回 true。

stats.isCharacterDevice()

如果字符设备的文件类型,则返回 true。

stats.isSymbolicLink()

如果符号链接的文件类型,则返回 true。

stats.isFIFO()

如果文件类型为 FIFO,则返回 true。

stats.isSocket()

如果 asocket 的文件类型,则返回 true。

让我们使用以下代码创建一个名为 main.js 的 js 文件 -


 var fs = require("fs");

console.log("Going to get file info!");
fs.stat('input.txt', function (err, stats) {
	 	if (err) {
	 	 	 return console.error(err);
	 	}
	 	console.log(stats);
	 	console.log("Got file info successfully!");
	 	
	 	// Check file type
	 	console.log("isFile ? " + stats.isFile());
	 	console.log("isDirectory ? " + stats.isDirectory()); 	 	
});

现在运行main.js以查看结果 -

$ node main.js

验证输出。

Going to get file info!
{
dev: 1792,
mode: 33188,
nlink: 1,
uid: 48,
gid: 48,
rdev: 0,
blksize: 4096,
ino: 4318127,
size: 97,
blocks: 8,
atime: Sun Mar 22 2015 13:40:00 GMT-0500 (CDT),
mtime: Sun Mar 22 2015 13:40:57 GMT-0500 (CDT),
ctime: Sun Mar 22 2015 13:40:57 GMT-0500 (CDT)
}
Got file info successfully!
isFile ? true
isDirectory ? false

关闭文件

语法

以下是关闭打开的文件的语法 -


 fs.close(fd, callback)

参数

以下是所用参数的描述 -

  • fd - 这是文件fs.open()方法返回的文件描述符。
  • callback - 这是回调函数,除了可能的异常外,没有为完成回调提供任何参数。

让我们创建一个名为 main.js 的 js 文件,其中包含以下代码 -


var fs = require("fs");
var buf = new Buffer(1024);

console.log("Going to open an existing file");
fs.open('input.txt', 'r+', function(err, fd) {
	 	if (err) {
	 	 	 return console.error(err);
	 	}
	 	console.log("File opened successfully!");
	 	console.log("Going to read the file");
	 	
	 	fs.read(fd, buf, 0, buf.length, 0, function(err, bytes) {
	 	 	 if (err) {
	 	 	 	 	console.log(err);
	 	 	 }

	 	 	 // Print only read bytes to avoid junk.
	 	 	 if(bytes > 0) {
	 	 	 	 	console.log(buf.slice(0, bytes).toString());
	 	 	 }

	 	 	 // Close the opened file.
	 	 	 fs.close(fd, function(err) {
	 	 	 	 	if (err) {
	 	 	 	 	 	 console.log(err);
	 	 	 	 	}	
	 	 	 	 	console.log("File closed successfully.");
	 	 	 });
	 	});
});

现在运行main.js以查看结果 -

$ node main.js

验证输出。

Going to open an existing file
File opened successfully!
Going to read the file
qikepu.com is giving self learning content
to teach the world in simple and easy way!!!!!

File closed successfully.

截断文件

语法

以下是截断打开的文件的方法的语法 -


 fs.ftruncate(fd, len, callback)

参数

以下是所用参数的描述 -

  • fd - 这是fs.open()返回的文件描述符。
  • len − 这是文件的长度,之后文件将被截断。
  • callback - 这是回调函数,除了可能的异常外,没有为完成回调提供任何参数。

让我们创建一个名为 main.js 的 js 文件,其中包含以下代码 -


var fs = require("fs");
var buf = new Buffer(1024);

console.log("Going to open an existing file");
fs.open('input.txt', 'r+', function(err, fd) {
	 	if (err) {
	 	 	 return console.error(err);
	 	}
	 	console.log("File opened successfully!");
	 	console.log("Going to truncate the file after 10 bytes");
	 	
	 	// Truncate the opened file.
	 	fs.ftruncate(fd, 10, function(err) {
	 	 	 if (err) {
	 	 	 	 	console.log(err);
	 	 	 }	
	 	 	 console.log("File truncated successfully.");
	 	 	 console.log("Going to read the same file");	
	 	 		
	 	 	 fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
	 	 	 	 	if (err) {
	 	 	 	 	 	 console.log(err);
	 	 	 	 	}

	 	 	 	 	// Print only read bytes to avoid junk.
	 	 	 	 	if(bytes > 0) {
	 	 	 	 	 	 console.log(buf.slice(0, bytes).toString());
	 	 	 	 	}

	 	 	 	 	// Close the opened file.
	 	 	 	 	fs.close(fd, function(err) {
	 	 	 	 	 	 if (err) {
	 	 	 	 	 	 	 	console.log(err);
	 	 	 	 	 	 }	
	 	 	 	 	 	 console.log("File closed successfully.");
	 	 	 	 	});
	 	 	 });
	 	});
});

现在运行main.js以查看结果 -

$ node main.js

验证输出。

Going to open an existing file
File opened successfully!
Going to truncate the file after 10 bytes
File truncated successfully.
Going to read the same file
qikepu
File closed successfully.

删除文件

语法

以下是删除文件的方法的语法 -


 fs.unlink(path, callback)

参数

以下是所用参数的描述 -

  • path - 这是包括路径在内的文件名。
  • callback - 这是回调函数,除了可能的异常外,没有为完成回调提供任何参数。

让我们创建一个名为 main.js 的 js 文件,其中包含以下代码 -


var fs = require("fs");

console.log("Going to delete an existing file");
fs.unlink('input.txt', function(err) {
	 	if (err) {
	 	 	 return console.error(err);
	 	}
	 	console.log("File deleted successfully!");
});

现在运行main.js以查看结果 -

$ node main.js

验证输出。

Going to delete an existing file
File deleted successfully!

创建目录

语法

以下是创建目录的方法的语法 -


 fs.mkdir(path[, mode], callback)

参数

以下是所用参数的描述 -

  • path − 这是包括路径在内的目录名称。
  • mode - 这是要设置的目录权限。默认值为 0777。
  • callback - 这是回调函数,除了可能的异常外,没有为完成回调提供任何参数。

让我们创建一个名为 main.js 的 js 文件,其中包含以下代码 -


var fs = require("fs");

console.log("Going to create directory /tmp/test");
fs.mkdir('/tmp/test',function(err) {
	 	if (err) {
	 	 	 return console.error(err);
	 	}
	 	console.log("Directory created successfully!");
});

现在运行main.js以查看结果 -

$ node main.js

验证输出。

Going to create directory /tmp/test
Directory created successfully!

读取目录

语法

以下是读取目录的方法的语法 -


 fs.readdir(path, callback)

参数

以下是所用参数的描述 -

  • path − 这是包括路径在内的目录名称。
  • callback - 这是回调函数,它获取两个参数(err,files),其中files是目录中文件名称的数组,不包括“..”和“..”。

让我们创建一个名为 main.js 的 js 文件,其中包含以下代码 -


var fs = require("fs");

console.log("Going to read directory /tmp");
fs.readdir("/tmp/",function(err, files) {
	 	if (err) {
	 	 	 return console.error(err);
	 	}
	 	files.forEach( function (file) {
	 	 	 console.log( file );
	 	});
});

现在运行main.js以查看结果 -

$ node main.js

验证输出。

Going to read directory /tmp
ccmzx99o.out
ccyCSbkF.out
employee.ser
hsperfdata_apache
test
test.txt

删除目录

语法

以下是删除目录的方法的语法 -


 fs.rmdir(path, callback)

参数

以下是所用参数的描述 -

  • path − 这是包括路径在内的目录名称。
  • callback - 这是回调函数,除了可能的异常外,没有为完成回调提供任何参数。

让我们创建一个名为 main.js 的 js 文件,其中包含以下代码 -


var fs = require("fs");

console.log("Going to delete directory /tmp/test");
fs.rmdir("/tmp/test",function(err) {
	 	if (err) {
	 	 	 return console.error(err);
	 	}
	 	console.log("Going to read directory /tmp");
	 	
	 	fs.readdir("/tmp/",function(err, files) {
	 	 	 if (err) {
	 	 	 	 	return console.error(err);
	 	 	 }
	 	 	 files.forEach( function (file) {
	 	 	 	 	console.log( file );
	 	 	 });
	 	});
});

现在运行main.js以查看结果 -

$ node main.js

验证输出。

Going to read directory /tmp
ccmzx99o.out
ccyCSbkF.out
employee.ser
hsperfdata_apache
test.txt

方法参考

以下是 Node.js 中可用的文件系统模块的参考。有关详细信息,您可以参考官方文档。

方法 描述
fs.rename(oldPath, newPath, callback)

异步 rename()。除了可能的异常之外,不会为完成回调提供任何参数。

fs.ftruncate(fd, len, callback)

异步 ftruncate()。除了可能的异常之外,不会为完成回调提供任何参数。

fs.ftruncateSync(fd, len)

同步 ftruncate()。

fs.truncate(path, len, callback)

异步 truncate()。除了可能的异常之外,不会为完成回调提供任何参数。

fs.truncateSync(path, len)

同步 truncate()。

fs.chown(path, uid, gid, callback)

异步 chown()。除了可能的异常之外,不会为完成回调提供任何参数。

fs.chownSync(path, uid, gid)

同步 chown()。

fs.fchown(fd, uid, gid, callback)

异步 fchown()。除了可能的异常之外,不会为完成回调提供任何参数。

fs.fchownSync(fd, uid, gid)

同步 fchown()。

fs.lchown(path, uid, gid, callback)

异步 lchown()。除了可能的异常之外,不会为完成回调提供任何参数。

fs.lchownSync(path, uid, gid)

同步 lchown()。

fs.chmod(path, mode, callback)

异步 chmod()。除了可能的异常之外,不会为完成回调提供任何参数。

fs.chmodSync(path, mode)

同步 chmod()。

fs.fchmod(fd, mode, callback)

异步 fchmod()。除了可能的异常之外,不会为完成回调提供任何参数。

fs.fchmodSync(fd, mode)

同步 fchmod()。

fs.lchmod(path, mode, callback)

异步 lchmod()。除了可能的异常之外,不会为完成回调提供任何参数。仅在 Mac OS X 上可用。

fs.lchmodSync(path, mode)

同步 lchmod()。

fs.stat(path, callback)

异步 stat()。回调获取两个参数(err、stats),其中 stats 是 fs。Stats 对象。

fs.lstat(path, callback)

异步 lstat()。回调获取两个参数(err、stats),其中 stats 是 fs。Stats 对象。lstat() 与 stat() 相同,不同之处在于如果 path 是符号链接,则链接本身是 stat-ed,而不是它引用的文件。

fs.fstat(fd, callback)

异步 fstat()。回调获取两个参数(err、stats),其中 stats 是 fs。Stats 对象。fstat() 与 stat() 相同,不同之处在于要统计的文件由文件描述符 fd 指定。

fs.statSync(path)

同步 stat()。返回 fs 的一个实例。统计。

fs.lstatSync(path)

同步 lstat()。返回 fs 的一个实例。统计。

fs.fstatSync(fd)

同步 fstat()。返回 fs 的一个实例。统计。

fs.link(srcpath, dstpath, callback)

异步链接()。除了可能的异常之外,不会为完成回调提供任何参数。

fs.linkSync(srcpath, dstpath)

同步链接()。

fs.symlink(srcpath, dstpath[, type], callback)

异步 symlink()。除了可能的异常之外,不会为完成回调提供任何参数。type 参数可以设置为 'dir'、'file' 或 'junction'(默认为 'file'),并且仅在 Windows 上可用(在其他平台上忽略)。请注意,Windows 交接点要求目标路径是绝对路径。使用 'junction' 时,目标参数将自动规范化为绝对路径。

fs.symlinkSync(srcpath, dstpath[, type])

同步 symlink()。

fs.readlink(path, callback)

异步 readlink()。回调获取两个参数(err、linkString)。

fs.realpath(path[, cache], callback)

异步 realpath()。回调获取两个参数(err、resolvedPath)。可以使用 process.cwd 来解析相对路径。Cache 是映射路径的对象文本,可用于强制执行特定路径解析或避免对已知实际路径进行额外的 fs.stat 调用。

fs.realpathSync(path[, cache])

同步 realpath()。返回已解析的路径。

fs.unlink(path, callback)

异步 unlink()。除了可能的异常之外,不会为完成回调提供任何参数。

fs.unlinkSync(path)

同步 unlink()。

fs.rmdir(path, callback)

异步 rmdir()。除了可能的异常之外,不会为完成回调提供任何参数。

fs.rmdirSync(path)

同步 rmdir()。

fs.mkdir(path[, mode], callback)

异步 mkdir(2)。除了可能的异常之外,不会为完成回调提供任何参数。模式默认为 0777。

fs.mkdirSync(path[, mode])

同步 mkdir()。

fs.readdir(path, callback)

异步 readdir(3)。读取目录的内容。回调获取两个参数(err、files),其中 files 是目录中文件名称的数组,不包括 '.' 和 '..'。

fs.readdirSync(path)

同步 readdir()。返回不包括 '.' 和 '..' 的文件名数组。

fs.close(fd, callback)

异步 close()。除了可能的异常之外,不会为完成回调提供任何参数。

fs.closeSync(fd)

同步 close()。

fs.open(path, flags[, mode], callback)

异步文件打开。

fs.openSync(path, flags[, mode])

fs.open() 的同步版本。

fs.utimes(path, atime, mtime, callback)

 

fs.utimesSync(path, atime, mtime)

更改所提供路径引用的文件的文件时间戳。

fs.futimes(fd, atime, mtime, callback)

 

fs.futimesSync(fd, atime, mtime)

更改提供的文件描述符引用的文件的文件时间戳。

fs.fsync(fd, callback)

异步 fsync。除了可能的异常之外,不会为完成回调提供任何参数。

fs.fsyncSync(fd)

同步 fsync。

fs.write(fd, buffer, offset, length[, position], callback)

将缓冲区写入 fd 指定的文件。

fs.write(fd, data[, position[, encoding]], callback)

将数据写入 fd 指定的文件。如果 data 不是 Buffer 实例,则该值将被强制转换为字符串。

fs.writeSync(fd, buffer, offset, length[, position])

fs.write() 的同步版本。返回写入的字节数。

fs.writeSync(fd, data[, position[, encoding]])

fs.write() 的同步版本。返回写入的字节数。

fs.read(fd, buffer, offset, length, position, callback)

从 fd 指定的文件中读取数据。

fs.readSync(fd, buffer, offset, length, position)

fs.read 的同步版本。返回 bytesRead 的数目。

fs.readFile(filename[, options], callback)

异步读取文件的全部内容。

fs.readFileSync(filename[, options])

fs.readFile 的同步版本。返回文件名的内容。

fs.writeFile(filename, data[, options], callback)

异步将数据写入文件,如果文件已存在,则替换该文件。data 可以是字符串或缓冲区。

fs.writeFileSync(filename, data[, options])

fs.writeFile 的同步版本。

fs.appendFile(filename, data[, options], callback)

将数据异步追加到文件,如果文件不存在,则创建该文件。data 可以是字符串或缓冲区。

fs.appendFileSync(filename, data[, options])

fs.appendFile 的同步版本。

fs.watchFile(filename[, options], listener)

注意文件名的变化。每次访问文件时,都会调用回调监听器。

fs.unwatchFile(filename[, listener])

停止监视文件名的更改。如果指定了侦听器,则仅删除该特定侦听器。否则,所有侦听器都将被删除,您实际上已停止观看文件名。

fs.watch(filename[, options][, listener])

注意 filename 的更改,其中 filename 是文件或目录。返回的对象是 fs。FSWacher。

fs.exists(path, callback)

通过检查文件系统来测试给定路径是否存在。然后使用 true 或 false 调用回调参数。

fs.existsSync(path)

fs.exists 的同步版本。

fs.access(path[, mode], callback)

测试用户对 path 指定的文件的权限。mode 是一个可选整数,用于指定要执行的辅助功能检查。

fs.accessSync(path[, mode])

fs.access 的同步版本。如果任何可访问性检查失败,它将抛出,并且不执行任何操作。

fs.createReadStream(path[, options])

返回一个新的 ReadStream 对象。

fs.createWriteStream(path[, options])

返回一个新的 WriteStream 对象。

fs.symlink(srcpath, dstpath[, type], callback)

异步 symlink()。除了可能的异常之外,不会为完成回调提供任何参数。type 参数可以设置为 'dir'、'file' 或 'junction'(默认为 'file'),并且仅在 Windows 上可用(在其他平台上忽略)。请注意,Windows 交接点要求目标路径是绝对路径。使用 'junction' 时,目标参数将自动规范化为绝对路径。