Nodejs教程-Node.js文件系统(FS)
在Node.js中,文件I/O是通过对标准POSIX函数的简单包装提供的。可以使用以下语法导入Node文件系统(fs)模块:
语法:
var fs = require("fs");
Node.js FS读取文件
fs模块中的每个方法都有同步和异步形式。
异步方法将最后一个参数作为完成回调函数。异步方法优于同步方法,因为它不会阻塞程序的执行,而同步方法会阻塞。
让我们看一个例子:
创建一个名为"input.txt"的文本文件,其中包含以下内容。
文件:input.txt
Javatpoint is a one of the best online tutorial website to learn different technologies
in a very easy and efficient manner.
创建一个名为"main.js"的JavaScript文件,其中包含以下代码:
文件:main.js
var fs = require("fs");
// 异步读取
fs.readFile('input.txt', function (err, data) {
if (err) {
return console.error(err);
}
console.log("Asynchronous read: " + data.toString());
});
// 同步读取
var data = fs.readFileSync('input.txt');
console.log("Synchronous read: " + data.toString());
console.log("Program Ended");
在Node.js命令提示符中打开并运行main.js:
node main.js
Node.js打开文件
语法:
异步模式中打开文件的方法的语法如下:
fs.open(path, flags[, mode], callback)
参数解释:
下面是上述语法中使用的参数的说明:
- path: 这是包含文件名和路径的字符串。
- flags: 标志指定要打开的文件的行为。下面列出了所有可能的值。
- mode: 这设置文件模式(权限和粘滞位),但仅当文件被创建时。默认为0666,可读可写。
- callback: 这是回调函数,它获取两个参数(err、fd)。
Node.js读/写标志(Flags)
下面是读/写操作的标志列表:
标志 | 描述 |
---|---|
r | 以读取模式打开文件。如果文件不存在,则出现异常。 |
r+ | 以读写模式打开文件。如果文件不存在,则出现异常。 |
rs | 以同步模式读取文件。 |
rs+ | 以同步模式读取和写入文件。查看有关谨慎使用此功能的注释的“rs”的注释。 |
w | 以写入模式打开文件。文件不存在则创建文件,文件存在则截断文件。 |
wx | 类似于'w',但如果路径存在,则失败。 |
w+ | 以读写模式打开文件。文件不存在则创建文件,文件存在则截断文件。 |
wx+ | 类似于'w+',但如果路径存在,则失败。 |
a | 以追加模式打开文件。文件不存在则创建文件。 |
ax | 类似于'a',但如果路径存在,则失败。 |
a+ | 以读取和追加模式打开文件。文件不存在则创建文件。 |
ax+ | 类似于'a+',但如果路径存在,则失败。 |
让我们看一个例子,以异步模式打开文件input.txt以进行读取和写入。
文件:main.js
var fs = require("fs");
// 异步 - 打开文件
console.log("Going to open file!");
fs.open('input.txt', 'r+', function(err, fd) {
if (err) {
return console.error(err);
}
console.log("File opened successfully!");
});
在Node.js命令提示符中打开并运行main.js:
node main.js
输出:
Node.js文件信息方法
语法:
获取文件信息的方法的语法如下。
fs.stat(path, callback)
参数解释:
- path: 这是包含文件名和路径的字符串。
- callback: 这是回调函数,它获取两个参数(err、stats),其中stats是一个fs.Stats类型的对象。
Node.js fs.Stats类方法
方法 | 描述 |
---|---|
stats.isFile() | 如果文件类型为简单文件,则返回true。 |
stats.isDirectory() | 如果文件类型为目录,则返回true。 |
stats.isBlockDevice() | 如果文件类型为块设备,则返回true。 |
stats.isCharacterDevice() | 如果文件类型为字符设备,则返回true。 |
stats.isSymbolicLink() | 如果文件类型为符号链接,则返回true。 |
stats.isFIFO() | 如果文件类型为FIFO,则返回true。 |
stats.isSocket() | 如果文件类型为套接字,则返回true。 |
让我们看一个例子,创建一个名为main.js的JavaScript文件,其中包含以下代码来获取文件input.txt的信息。
文件:main.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!");
// 检查文件类型
console.log("isFile ? " + stats.isFile());
console.log("isDirectory ? " + stats.isDirectory());
});
现在打开Node.js命令提示符并运行main.js:
node main.js
输出: