在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

输出:

1.png

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

输出:

2.png

标签: Nodejs, Nodejs安装教程, Nodejs教程, node, nodejs入门, nodejs入门教程, nodejs进阶, nodejs学习教程, nodejs开发, nodejs指南, nodejs学习指南, nodejs环境配置, nodejs框架