📜  nodejs 读取文件到数组 - Javascript (1)

📅  最后修改于: 2023-12-03 15:03:16.115000             🧑  作者: Mango

用Node.js读取文件到数组

在Node.js中,可以通过fs模块读取文件并将其内容存储在一个数组中。这个过程十分简单,并且提供了一种灵活的方式处理文件。

方法1:使用readFileSync同步读取文件
const fs = require('fs');
try {
  const data = fs.readFileSync('file.txt', 'utf8').split('\n'); // split() 将字符串转化为数组
  console.log(data);
} catch (err) {
  console.error(err);
}

这里,我们使用了fs模块的readFileSync方法来读取文件内容,并通过split()方法将其转化为一个数组。注意,我们需要以utf8格式指定文件读取格式。

方法2:使用readFile异步读取文件
const fs = require('fs');
fs.readFile('file.txt', 'utf8', function (err, data) {
  if (err) throw err;
  const array = data.split('\n');
  console.log(array);
});

这里,我们使用了fs模块的readFile方法异步地读取文件内容,同时为了确保读取成功,我们需要检查err参数是否为空。读取成功后,我们同样可以使用split()方法将读取到的内容转化为一个数组。

方法3:使用createReadStream流式读取文件
const fs = require('fs');
const readline = require('readline');

const array = [];

const reader = readline.createInterface({
  input: fs.createReadStream('file.txt'),
  console: false
});

reader.on('line', function (line) {
  array.push(line);
});

reader.on('close', function () {
  console.log(array);
});

这里,我们使用了fs模块的createReadStream方法来创建一个流式读取文件的对象,并使用readline模块的createInterface方法返回一个用于读取流的可读接口。在可读接口中,我们监听line事件和close事件。当读取到每一行数据时,会触发line事件,并将每行数据存入数组中。当全部数据读取完成后,会触发close事件,并打印数组长度和数组内容。

以上三种方法都可以将文件内容以数组的形式读取出来,处理文件内容时更加便利。